1.1.3 • Published 4 years ago

awslambdaproxyresponse v1.1.3

Weekly downloads
13
License
MIT
Repository
github
Last release
4 years ago

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