OpenWhisk returns 整个响应 object 而不仅仅是数据
OpenWhisk returns whole response object instead of just the data
我有一个 returns 响应 object 的 OpenWhisk 操作,因为我希望能够控制 headers 和 HTTP 状态代码。我的操作 returns 是这样的:
return {
statusCode: 200,
headers: { 'Content-Type': 'application/json' },
body: { x: 1 }
};
我在来自 command-line 的包中部署操作:[=18=]
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 调用时,我得到了整个响应 object,而不仅仅是数据:
curl '.../myproj/myaction'
{
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": { x: 1 }
}
我只希望得到 { x: 1 }
。
我需要做什么来解决这个问题?
默认的 API 网关服务行为期望正文数据 return 来自操作,而不是完整的 HTTP 响应参数。
将 return 语句更改为以下内容以解决此问题。
return {
x: 1
};
使用 returned 操作参数控制完整的 HTTP 响应需要在网络操作上设置 --response-type http
标志。
$ wsk api create /myproj /myaction get myproj/myaction --response-type http
我有一个 returns 响应 object 的 OpenWhisk 操作,因为我希望能够控制 headers 和 HTTP 状态代码。我的操作 returns 是这样的:
return {
statusCode: 200,
headers: { 'Content-Type': 'application/json' },
body: { x: 1 }
};
我在来自 command-line 的包中部署操作:[=18=]
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 调用时,我得到了整个响应 object,而不仅仅是数据:
curl '.../myproj/myaction'
{
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": { x: 1 }
}
我只希望得到 { x: 1 }
。
我需要做什么来解决这个问题?
默认的 API 网关服务行为期望正文数据 return 来自操作,而不是完整的 HTTP 响应参数。
将 return 语句更改为以下内容以解决此问题。
return {
x: 1
};
使用 returned 操作参数控制完整的 HTTP 响应需要在网络操作上设置 --response-type http
标志。
$ wsk api create /myproj /myaction get myproj/myaction --response-type http