Awesome
hafas-rest-api
Expose a hafas-client@6
instance as an HTTP REST API.
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
key | description | mandatory? | default value |
---|---|---|---|
hostname | The public hostname of the API. | ✔︎ | – |
name | The name of the API. Used for the X-Powered-By header and the about page. | ✔︎ | – |
description | Used for the about page. | ✔︎ (with aboutPage: true ) | – |
docsLink | Used for the about page. | ✔︎ (with aboutPage: true ) | – |
cors | Enable CORS? | ✗ | true |
etags | Express config for ETag headers | ✗ | weak |
handleErrors | Handle errors by sending 5** codes and JSON. | ✗ | true |
logging | Log requests using pino ? | ✗ | false |
healthCheck | A function that returning Promises that resolve with true (for healthy) or false . | ✗ | – |
version | Used for the X-Powered-By and X-API-Version headers. | ✗ | – |
homepage | Used for the X-Powered-By header. | ✗ | – |
aboutPage | Enable the about page on GET / ? | ✗ | true |
openapiSpec | Generate and serve an OpenAPI spec of the API? | ✗ | false |
addHafasOpts | Computes additional hafas-client opts. (opt, hafasClientMethod, httpReq) => additionaOpts | ✗ | – |
modifyRoutes | Extend 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.