0

I have some web-enabled actions that are exposed through API Connect in IBM Cloud Serverless Functions. Some of my actions use request-promises to call external REST services and I need to be able to catch an error and respond with an appropriate status-code to the caller. Since the actions are web-enabled, the documentation indicates that I can use an annotated JSON to set the headers, status-code and body of the response. But it seems that, seems the API expects to always get a Content-Type=application/json, the response processor is failing to understand my annotations in the case of an error. I tried the following without success:

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

Another variation:

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

The problem is that the status-code I always get is 200... I also tried to change the runtime to node8.0 without success.

Thanks!

1 Answers1

2

I found the answer myself :)

In order to get the status-code and headers, one must set the field Response Content Type to `Use "Content-Type" header from action", while setting up the mapping between the API call and the action....