在网络操作上发送适当的错误响应

时间:2019-02-06 04:10:02

标签: openwhisk ibm-cloud-functions

我有一些启用Web的操作,这些操作是通过IBM Cloud Serverless Functions中的API Connect公开的。 我的某些操作使用请求承诺来调用外部REST服务,并且我需要能够捕获错误并以适当的状态代码响应调用者。 由于操作是启用Web的,因此文档表明我可以使用带注释的JSON设置响应的标头,状态代码和正文。但是似乎API似乎总是希望获得Content-Type = application / json,在出现错误的情况下,响应处理器无法理解我的注释。 我尝试了以下方法,但没有成功:

let rp = require('request-promise');
function main(params){
    //setup options
    return rp(options).then( 
      res => {
        return res;
      }
    ).catch(
      err => {
        return { error: { statusCode:err.statusCode } }
      }
    );
}

另一种变化:

let rp = require('request-promise');
function main(params){
    //setup options
    return rp(options).then( 
      res => {
        return res;
      }
    ).catch(
      err => {
        return { statusCode:err.statusCode }
      }
    );
}

问题是我总是得到的状态码是200 ...我也试图将运行时更改为node8.0,但没有成功。

谢谢!

1 个答案:

答案 0 :(得分:2)

我自己找到了答案:)

为了获得状态码和标头,必须在设置API调用和操作之间的映射的同时将字段Response Content Type设置为“使用来自“操作的Content-Type”标头”。 ...