diff --git a/README.md b/README.md index d8ece57..839dd26 100644 --- a/README.md +++ b/README.md @@ -44,43 +44,56 @@ You may have heard that a serverless "best practice" is to keep your functions s Whatever you decide is best for your use case, **Lambda API** is there to support you. Whether your function has over a hundred routes, or just one, Lambda API's small size and lightning fast load time has virtually no impact on your function's performance. You can even define global wildcard routes that will process any incoming request, allowing you to use API Gateway or ALB to determine the routing. Yet despite its small footprint, it gives you the power of a full-featured web framework. ## Table of Contents +- [Simple Example](#simple-example) +- [Why Another Web Framework?](#why-another-web-framework) + - [Single Purpose Functions](#single-purpose-functions) +- [Table of Contents](#table-of-contents) - [Installation](#installation) - [Requirements](#requirements) - [Configuration](#configuration) - [Recent Updates](#recent-updates) + - [v0.10: ALB support, method-based middleware, and multi-value headers and query string parameters](#v010-alb-support-method-based-middleware-and-multi-value-headers-and-query-string-parameters) + - [v0.9: New error types, custom serializers, and TypeScript support](#v09-new-error-types-custom-serializers-and-typescript-support) + - [v0.8: Logging support with sampling](#v08-logging-support-with-sampling) + - [v0.7: Restrict middleware execution to certain paths](#v07-restrict-middleware-execution-to-certain-paths) + - [v0.6: Support for both `callback-style` and `async-await`](#v06-support-for-both-callback-style-and-async-await) + - [v0.5: Remove Bluebird promises dependency](#v05-remove-bluebird-promises-dependency) + - [v0.4: Binary support](#v04-binary-support) + - [v0.3: New instantiation method](#v03-new-instantiation-method) - [Routes and HTTP Methods](#routes-and-http-methods) - [Returning Responses](#returning-responses) - [Async/Await](#asyncawait) - [Promises](#promises) + - [A Note About Flow Control](#a-note-about-flow-control) - [Route Prefixing](#route-prefixing) - [Debugging Routes](#debugging-routes) - [REQUEST](#request) - [RESPONSE](#response) - - [attachment()](#attachmentfilename) - - [cache()](#cacheage--private) - - [clearCookie()](#clearcookiename-options) - - [cookie()](#cookiename-value-options) - - [cors()](#corsoptions) - - [download()](#downloadfile--filename--options--callback) - - [error()](#errorcode-message-detail) - - [etag()](#etagboolean) - - [getHeader()](#getheaderkey-value--asarray) + - [status(code)](#statuscode) + - [sendStatus(code)](#sendstatuscode) + - [header(key, value [,append])](#headerkey-value-append) + - [getHeader(key [,asArray])](#getheaderkey-asarray) - [getHeaders()](#getheaders) - - [getLink()](#getlinks3path-expires-callback) - - [hasHeader()](#hasheaderkey) - - [header()](#headerkey-value--append) - - [html()](#htmlbody) - - [json()](#jsonbody) - - [jsonp()](#jsonpbody) - - [location](#locationpath) - - [modified()](#modifieddate) - - [redirect()](#redirectstatus-path) - - [removeHeader()](#removeheaderkey) - - [send()](#sendbody) - - [sendFile()](#sendfilefile--options--callback) - - [sendStatus()](#sendstatuscode) - - [status()](#statuscode) - - [type()](#typetype) + - [hasHeader(key)](#hasheaderkey) + - [removeHeader(key)](#removeheaderkey) + - [getLink(s3Path [, expires] [, callback])](#getlinks3path--expires--callback) + - [send(body)](#sendbody) + - [json(body)](#jsonbody) + - [jsonp(body)](#jsonpbody) + - [html(body)](#htmlbody) + - [type(type)](#typetype) + - [location(path)](#locationpath) + - [redirect([status,] path)](#redirectstatus-path) + - [cors([options])](#corsoptions) + - [error([code], message [,detail])](#errorcode-message-detail) + - [cookie(name, value [,options])](#cookiename-value-options) + - [clearCookie(name [,options])](#clearcookiename-options) + - [etag([boolean])](#etagboolean) + - [cache([age] [, private])](#cacheage--private) + - [modified(date)](#modifieddate) + - [attachment([filename])](#attachmentfilename) + - [download(file [, filename] [, options] [, callback])](#downloadfile--filename--options--callback) + - [sendFile(file [, options] [, callback])](#sendfilefile--options--callback) - [Enabling Binary Support](#enabling-binary-support) - [Path Parameters](#path-parameters) - [Wildcard Routes](#wildcard-routes) @@ -94,6 +107,9 @@ Whatever you decide is best for your use case, **Lambda API** is there to suppor - [Serializers](#serializers) - [Sampling](#sampling) - [Middleware](#middleware) + - [Restricting middleware execution to certain path(s)](#restricting-middleware-execution-to-certain-paths) + - [Specifying multiple middleware](#specifying-multiple-middleware) + - [Method-based middleware](#method-based-middleware) - [Clean Up](#clean-up) - [Error Handling](#error-handling) - [Error Types](#error-types) @@ -104,9 +120,11 @@ Whatever you decide is best for your use case, **Lambda API** is there to suppor - [Lambda Proxy Integration](#lambda-proxy-integration) - [ALB Integration](#alb-integration) - [Configuring Routes in API Gateway](#configuring-routes-in-api-gateway) +- [Reusing Persistent Connections](#reusing-persistent-connections) - [TypeScript Support](#typescript-support) - [Sponsors](#sponsors) - [Contributions](#contributions) +- [Are you using Lambda API?](#are-you-using-lambda-api) ## Installation ``` @@ -1376,6 +1394,11 @@ exports.run = async (event: APIGatewayEvent, context: Context) => { } ``` +## Sponsors + +[![New Relic](https://user-images.githubusercontent.com/2053544/96728664-55238700-1382-11eb-93cb-82fe7cb5e043.png)](https://ad.doubleclick.net/ddm/trackclk/N1116303.3950900PODSEARCH.COM/B24770737.285235234;dc_trk_aid=479074825;dc_trk_cid=139488579;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;gdpr=${GDPR};gdpr_consent=${GDPR_CONSENT_755}) +Advertisement + ## Contributions Contributions, ideas and bug reports are welcome and greatly appreciated. Please add [issues](https://github.com/jeremydaly/lambda-api/issues) for suggestions and bug reports or create a pull request.