【问题标题】:OpenWhisk returns whole response object instead of just the dataOpenWhisk 返回整个响应对象,而不仅仅是数据
【发布时间】:2018-05-03 11:44:29
【问题描述】:

我有一个返回响应对象的 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

并将其作为 API 在 IBM Cloud Functions 上公开:

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 }

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

【问题讨论】:

  • 当没有http扩展被传递给“wsk api”时,默认类型是json,就像传递“--response-type json”一样,下面的两个选项来修复

标签: node.js openwhisk ibm-cloud-functions


【解决方案1】:

默认 API Gateway 服务行为期望从操作返回正文数据,而不是完整的 HTTP 响应参数。

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

return {
    x: 1
};

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多