我使用 DigitalOcean 有以下无服务器函数(类似于 Lambda):
function process(params) {
//access URL parameters like params.t, params.var, etc
}
exports.main = process;
问题是我只知道如何将数据作为
GET
请求传递,我该如何将其作为 POST
来完成?
如何检索
POST
数据?
如果我发送
POST
请求,我会收到以下错误:
Response is not valid 'message/http
因为
process()
函数不知道如何处理POST数据。
DigitalOcean 是这样说的:
function main(args) {
switch (args.__ow_method) {
case 'GET': ...
case 'POST': ...
}
}
但这对
GET
和 POST
都不起作用,因为 args
仅包含 URL 参数(._ow_method
甚至不存在)。
如何在 Node 中获取
POST
数据,而不仅仅是 GET
更新 - 只是通过
cURL
发出 POST 请求来解决 - params
参数只是获取值
我在 DO 函数中遇到了同样的
Response is not valid 'message/http'
错误,尽管是在 python 运行时。分享以防帮助他人。
我的函数在从仪表板触发时有效,但不能通过浏览器或curl触发。缺乏调试工具或日志并没有帮助,仪表板和curl/浏览器之间的行为不一致也没有帮助。
我的错误是没有返回包含 DO 所需组件的字典(请参阅返回部分),这应该是:
{
"body": <required>, # This is where your response goes!
# Can be dict (for JSON response) or text
"statusCode": <optional>, # Http status code, default=200
"headers": <optional> # Dict of additional headers
}
而我只是将返回值放在字典的顶层,而不是放在body
下。