This is a JSON API serializer for Fortune.js, which implements all of the features in the base specification, and follows the recommendations as much as possible.
$ npm install fortune fortune-http fortune-json-apiconst http = require('http')
const fortune = require('fortune')
const fortuneHTTP = require('fortune-http')
const jsonApiSerializer = require('fortune-json-api')
// `instance` is an instance of Fortune.js.
const listener = fortuneHTTP(instance, {
serializers: [
// The `options` object here is optional.
[ jsonApiSerializer, options ]
]
})
// The listener function may be used as a standalone server, or
// may be composed as part of a framework.
const server = http.createServer((request, response) =>
listener(request, response)
.catch(error => { /* error logging */ }))
server.listen(8080)The options object is as follows:
prefix: hyperlink prefix. If this prefix starts with/, then it will rewrite paths relative to the prefix. For example, a prefix valued/apiwill handle requests at that route like/api/users/1. Default:""(empty string).inflectType: pluralize and dasherize the record type name in the URI. Can be Boolean to enable/disable all inflections or an object specifying each type in specific with unreferenced types set to default, ex:{ faculty: false }. Default:true.inflectKeys: camelize the field names per record. Default:true.maxLimit: maximum number of records to show per page. Default:1000.includeLimit: maximum depth of fields per include. Default:3.bufferEncoding: which encoding type to use for input buffer fields. Default:base64.jsonSpaces: how many spaces to use for pretty printing JSON. Default:2.jsonapi: top-level object mainly used for describing version. Default:{ version: '1.0' }.castNumericIds: whether to cast numeric id strings to numbers. Default:true.
Internal options:
uriTemplate: URI template string.allowLevel: HTTP methods to allow ordered by appearance in URI template.
This software is licensed under the MIT license.