我有一个返回响应对象的OpenWhisk操作,因为我希望能够控制标头和HTTP状态代码。我的动作返回的内容如下:
return {
statusCode: 200,
headers: { 'Content-Type': 'application/json' },
body: { x: 1 }
};
我使用命令行在包中部署操作:
wsk action update myproj/myaction --kind nodejs:6 myaction.zip --web true
并在IBM Cloud Functions上将其公开为API:
wsk api create /myproj /myaction get myproj/myaction
但是当我使用curl
访问API调用时,我得到了整个响应对象,而不仅仅是数据:
curl '.../myproj/myaction'
{
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": { x: 1 }
}
我原本希望得到{ x: 1 }
。
我需要做些什么来解决这个问题?
答案 0 :(得分:2)
默认的API网关服务行为需要从操作返回正文数据,而不是完整的HTTP响应参数。
将return语句更改为以下内容以解决此问题。
return {
x: 1
};
使用返回的操作参数控制完整的HTTP响应需要在Web操作上设置--response-type http
标记。
$ wsk api create /myproj /myaction get myproj/myaction --response-type http