2.4.0 • Published 10 months ago

ts-lambda-api-local v2.4.0

Weekly downloads
16
License
MIT
Repository
github
Last release
10 months ago

ts-lambda-api-local

Extension module for the ts-lambda-api package which enables running lambda REST API's locally using express.

This module also provides Swagger UI support, powered by the swagger-ui-express npm package.

NPM Package GitHub Repo

Read the full typedoc documentation: https://djfdyuruiry.github.io/ts-lambda-api-local/


Getting Started


Note: These steps modify an existing ts-lambda-api app. If you don't have one, see the package documentation.

  • Install this package and types for Node.js as dev dependencies:
npm install -D ts-lambda-api-local
npm install -D @types/node
  • Create a new typescript file, add the following:
import * as path from 'path'
import { AppConfig } from 'ts-lambda-api'

import { ApiConsoleApp } from 'ts-lambda-api-local'

const appConfig = new AppConfig()

appConfig.base = '/api/v1'
appConfig.version = 'v1'

// if you use a different directory, point to it here instead of 'controllers'
const controllersPath = [path.join(__dirname, 'controllers')]
let app = new ApiConsoleApp(controllersPath, appConfig)

app.runServer(process.argv)
  • Compile your application and run the new JS file using Node.js

  • You can now call your API locally:

wget -qO - http://localhost:8080/api/v1/hello-world/

Command Line Arguments


ApiConsoleApp supports several optional command line parameters.

  • -p or --port: Port to listen on, defaults to 8080
  • -h or --host: Host to accept requests on, defaults to * (any hostname/ip)
  • -c or --cors-origin: CORS origins to allow, defaults to * (any origin)

Configuration


Both the configureApp and configureApi methods documented in ts-lambda-api are available in the ApiConsoleApp class.


Swagger UI


To enable the Swagger UI page, simply enable open-api in your application config. The interface will then be available from the /swagger endpoint. For example, if you configured your app like below:

import * as path from 'path'
import { AppConfig } from 'ts-lambda-api'

import { ApiConsoleApp } from 'ts-lambda-api-local'

const appConfig = new AppConfig()

appConfig.base = '/api/v1'
appConfig.version = 'v1'
appConfig.openApi.enabled = true

// if you use a different directory, point to it here instead of 'controllers'
const controllersPath = [path.join(__dirname, 'controllers')]
let app = new ApiConsoleApp(controllersPath, appConfig)

app.runServer(process.argv)

Then, the Swagger UI interface will be available @ http://localhost:8080/api/v1/swagger


Packaging for Release


When you are packing up your lambda API for release to AWS, ensure that you have installed this package as a development dependency only, otherwise it will significantly slow down and bloat your lambda.

2.4.0

10 months ago

2.3.1

2 years ago

2.3.0

3 years ago

2.2.3

3 years ago

2.2.2

3 years ago

2.2.1

3 years ago

2.2.0

4 years ago

2.1.0

4 years ago

1.2.0

4 years ago

2.0.0

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago

0.8.0

4 years ago

0.7.1

4 years ago

0.7.0

5 years ago

0.6.5

5 years ago

0.6.4

5 years ago

0.6.3

5 years ago

0.6.2

5 years ago

0.6.1-1

5 years ago

0.6.1

5 years ago

0.6.0

5 years ago

0.5.0

5 years ago

0.4.7-1

5 years ago

0.4.7

5 years ago

0.4.6

5 years ago

0.4.5

5 years ago

0.4.4

5 years ago

0.4.3

5 years ago