Home

Awesome

hafas-rest-api

Expose a hafas-client@6 instance as an HTTP REST API.

npm version ISC-licensed support Jannis via GitHub Sponsors chat with Jannis on Twitter

Installing

npm install hafas-rest-api

Usage

import {createClient as createHafas} from 'hafas-client'
import {profile as dbProfile} from 'hafas-client/p/db/index.js'
import {createHafasRestApi as createApi} from 'hafas-rest-api'

const config = {
	hostname: 'example.org',
	name: 'my-hafas-rest-api',
	homepage: 'https://github.com/someone/my-hafas-rest-api',
	version: '1.0.0',
	aboutPage: false
}

const hafas = createHafas(dbProfile, 'my-hafas-rest-api')
const api = await createApi(hafas, config)

api.listen(3000, (err) => {
	if (err) console.error(err)
})

config keys

keydescriptionmandatory?default value
hostnameThe public hostname of the API.✔︎
nameThe name of the API. Used for the X-Powered-By header and the about page.✔︎
descriptionUsed for the about page.✔︎ (with aboutPage: true)
docsLinkUsed for the about page.✔︎ (with aboutPage: true)
corsEnable CORS?true
etagsExpress config for ETag headersweak
handleErrorsHandle errors by sending 5** codes and JSON.true
loggingLog requests using pino?false
healthCheckA function that returning Promises that resolve with true (for healthy) or false.
versionUsed for the X-Powered-By and X-API-Version headers.
homepageUsed for the X-Powered-By header.
aboutPageEnable the about page on GET /?true
openapiSpecGenerate and serve an OpenAPI spec of the API?false
addHafasOptsComputes additional hafas-client opts. (opt, hafasClientMethod, httpReq) => additionaOpts
modifyRoutesExtend or modify the default routes.routes => routes

Pro Tip: Use hafas-client-health-check for config.healthCheck.

Contributing

If you have a question or have difficulties using hafas-rest-api, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.