0.1.0 • Published 7 years ago

serverless-endpoint v0.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

serverless-endpoint

Dependency-less express like wrapper for serverless functions.

Build Status npm version Coverage Status

Support

✔️️ AWS Api Gateway | ✔️ Google Cloud Functions | ❌ Azure functions | ❌ IBM OpenWhisk

Install

npm install --save serverless-endpoint

usage

Basic Example

// handler

const endpoint = require('serverless-endpoint');

function getHelloWorld(req, res) {

  res.send(200, { message: 'Hello World!' })
}

module.exports.handler = endpoint(getHelloWorld)

Path Parameter Example

// endpoint /hello/{value}

// handler

const endpoint = require('serverless-endpoint');

function getHelloWorld(req, res) {

  res.send(200, { message: `Hello world! ${req.params.value}` })
}

module.exports.handler = endpoint(getHelloWorld)

Query Parameter Example

// endpoint /hello/?timestamp=true

// handler

const endpoint = require('serverless-endpoint');

function getHelloWorld(req, res) {

  const timestamp = req.query.timestamp ? new Date() : ''

  res.send(200, { message: `Hello World! ${timestamp}` })
}

module.exports.handler = endpoint(getHelloWorld)

Body Example

// endpoint /hello/, { data: 'lorem' }

// handler

const endpoint = require('serverless-endpoint');

function getHelloWorld(req, res) {

  res.send(200, { message: `Hello World! ${req.body.data}` })
}

module.exports.handler = endpoint(getHelloWorld)

Cors Response Example

// endpoint /hello

// handler

const endpoint = require('serverless-endpoint');

function getHelloWorld(req, res) {

  res.header({ "Access-Control-Allow-Origin" : "*" })
    .send(200, { message: `Hello World!` })
}

module.exports.handler = endpoint(getHelloWorld)

Cors through Config Response Example

const endpoint = require('serverless-endpoint');

// Config Options
const opts = {
  headers: { "Access-Control-Allow-Origin": "*" }
}

// endpoint /hello
function getHelloWorld(req, res) {

  res.send(200, { message: `Hello World!` })
}

// endpoint /ping
function ping(req, res) {

  res.header({ "Additional-Header": "example" })
    .send(200, { message: `Ping!` })
  // returns  
  // {
  //   statusCode: 200,
  //   body: message,
  //   headers: {
  //     "Access-Control-Allow-Origin": "*",
  //     "Additional-Header": "example"
  //   }
  // }
}

module.exports.getHelloWorld = endpoint(getHelloWorld, opts)
module.exports.ping = endpoint(ping, opts)

Api

endpoint(cloudFunctionHandler, options)

Higher Order Function that abstracts the different cloud function parameters into a single express-like api. Is configurable by options parameter.

options

Properties

NameTypeDescription
headersObjectdefault headers to be sent with res.send

req : Object

Properties

NameTypeDescription
bodyObjecthttp body object sent by request
methodstringHttp method - GET, PUT, POST, DELETE, etc..
pathstringA cleaned url string
resourcestringbase resource of url
headersObjectheader object containing all header information
paramsObjectparameters object from url path - /resource/{id} = { id: <value> }
queryObjectquery parameters object from url - /resource?sort=asc = { sort: 'asc' }
idstringAWS Only string id of the request: AWS.event.requestContext.requestId
apiIdstringAWS Only string apiId: AWS.event.requestContext.apiId
stagestringAWS Only api stage from url - /dev/resource = 'dev'
identityObjectAWS Only identity of user: event.requestContext.identity
authorizerObjectAWS Only object returned from custom authorizer: event.requestContext.authorizer
headerfunctionvalue for the header key - header(headerKey)
getfunctionvalue for the header key - get(headerKey)
getOriginalRequestfunctionAWS Onlyreturns the arguments provided to the http function

res : Object

Properties

NameTypeDescription
sendfunctionSends the HTTP response.
errorfunctionAWS Only Returns an error to api gateway.
headerfunctionSet header key to value, or pass an object of header fields.
setfunctionAlias for header
getHeaderfunctionGet value for header key.
getfunctionAlias for getHeader

res.send(statusCode, body)

Formats statusCode, body to be sent as a HTTP response back to api consumer (Api Gateway, Google Endpoint). The body parameter can be a a String, an object, or an Array.

Kind: public function Returns: Object - response HTTP response object formatted for Api Gateway.

ParamTypeDescription
statusCodenumberHttp Response code
bodystring | Object | ArrayResponse body

res.error(error) AWS Only

returns error to api gateway

Kind: public function Returns: Object - Error to be handed to ApiGateway

ParamTypeDescription
errObjectCaught javascript error

res.headers(key , value)

Set header key to value, or pass an object of header fields. Examples:

res.header('Foo', ['bar', 'bot']);
res.header('Content-Type', 'application/json');
res.header({ 'Content-Type': 'text/html', 'X-API-Key': 'buildkey' });

// chaining
res.header({ 'Content-Type': 'text/html' })
  .send(200, html);

Aliased as res.set().

Kind: public function Returns: Res - Returns the same Res for chaining

res.getHeader(key)

Get value for header key. Examples:

res.header('Foo', 'bar');
res.getHeader('Foo');
// Returns 'bar'

Aliased as res.get().

Kind: public function Returns: string - Returns value for header key.

0.1.0

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago