awslambdaproxyresponse

1.1.3 • Public • Published

AWS Lambda proxy response

A Node.js module which generates response payloads for API Gateway fronted Lambda functions integrated via the Lambda proxy method.

NPM

The response structure takes the following form:

{
    statusCode: httpStatusCode,
    headers: { headerName: 'headerValue' },
    body: '...'
}

Methods

AWSLambdaProxyResponse([statusCode])

  • Creates new AWSLambdaProxyResponse instance.
  • Optional statusCode sets the HTTP status code for the response, otherwise defaults to 200 / OK.
  • Collection of valid HTTP codes defined at AWSLambdaProxyResponse.HTTP_STATUS.
  • Constructor will throw an exception if given statusCode is not within this collection.

Example:

const AWSLambdaProxyResponse = require('awslambdaproxyresponse');
 
const resp = new AWSLambdaProxyResponse(
    AWSLambdaProxyResponse.HTTP_STATUS.FOUND
);

AWSLambdaProxyResponse.setStatusCode(statusCode)

  • Sets the HTTP statusCode for a response.
  • Throws an exception if given statusCode is not within the AWSLambdaProxyResponse.HTTP_STATUS collection.
  • Returns AWSLambdaProxyResponse instance.

AWSLambdaProxyResponse.addHeader(name[,value])

  • Adds HTTP headers to the Lambda proxy response.
  • Single HTTP header can be added by providing a name / value pair.
  • Multiple headers can be added by providing an object collection as name only.
  • Throws an exception if header names don't match the regular expression pattern /^[A-Za-z-]+$/.
  • Returns AWSLambdaProxyResponse instance.

Example:

const AWSLambdaProxyResponse = require('awslambdaproxyresponse');
const resp = new AWSLambdaProxyResponse();
 
// lets add a single header
resp.addHeader('Content-Type','text/html');
 
// add several others
resp.addHeader({
    'x-custom-header': 'value',
    'x-user-auth': 'Donald Duck'
});

AWSLambdaProxyResponse.setBody(body)

  • Sets the response body payload.
  • If body is not of type string, will be automatically serialized via JSON.stringify().
  • Returns AWSLambdaProxyResponse instance.

AWSLambdaProxyResponse.getPayload()

Returns a valid Lambda proxy response structure object.

Constants

AWSLambdaProxyResponse.HTTP_STATUS

A collection of valid HTTP status codes for use with the AWSLambdaProxyResponse() constructor or setStatusCode(statusCode) method:

const AWSLambdaProxyResponse = require('awslambdaproxyresponse');
console.dir(AWSLambdaProxyResponse.HTTP_STATUS);
 
/*
{
    OK: 200,
    MOVED: 301,
    FOUND: 302,
    BAD_REQUEST: 400,
    UNAUTHORIZED: 401,
    FORBIDDEN: 403,
    NOT_FOUND: 404,
    SERVER_ERROR: 500,
    NOT_IMPLEMENTED: 501,
    BAD_GATEWAY: 502,
    SERVICE_UNAVAILABLE: 503,
    GATEWAY_TIMEOUT: 504
}
*/

Example usage

Within the context of a Lambda function:

const AWSLambdaProxyResponse = require('awslambdaproxyresponse');
 
exports.myHandler = (event,context,callback) => {
 
    // create our response
    const resp = new AWSLambdaProxyResponse();
    resp.setBody('Hello world');
 
    // return from Lambda
    callback(null,resp.getPayload());
 
    /*
    console.dir(resp.getPayload());
    {
        statusCode: 200,
        headers: {},
        body: 'Hello world'
    }
    */
};

A Lambda response that results in a redirect:

const AWSLambdaProxyResponse = require('awslambdaproxyresponse');
 
exports.myHandler = (event,context,callback) => {
 
    // create our response
    const resp = new AWSLambdaProxyResponse();
 
    resp.setStatusCode(AWSLambdaProxyResponse.HTTP_STATUS.MOVED);
    resp.addHeader('Location','https://my.new.domain.com/');
 
    // return from Lambda
    callback(null,resp.getPayload());
 
    /*
    console.dir(resp.getPayload());
    {
        statusCode: 301,
        headers: { Location: 'https://my.new.domain.com/' },
        body: ''
    }
    */
};

Reference

Readme

Keywords

Package Sidebar

Install

npm i awslambdaproxyresponse

Weekly Downloads

56

Version

1.1.3

License

MIT

Unpacked Size

12.8 kB

Total Files

6

Last publish

Collaborators

  • magnetikonline