OpenWhisk返回整个响应对象,而不仅仅是数据

我有一个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 }

我需要做什么来解决这个问题?

默认的API网关服务行为期望从操作中返回主体数据,而不是完整的HTTP响应参数。

将return语句更改为以下内容来解决此问题。

 return { x: 1 }; 

使用返回的操作参数来控制完整的HTTP响应,需要Web操作中的--response-type http标志设置。

 $ wsk api create /myproj /myaction get myproj/myaction --response-type http 
Interesting Posts