Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fortunejs/fortune-json-api
JSON API serializer for Fortune.
https://github.com/fortunejs/fortune-json-api
json-api json-api-serializer
Last synced: 2 days ago
JSON representation
JSON API serializer for Fortune.
- Host: GitHub
- URL: https://github.com/fortunejs/fortune-json-api
- Owner: fortunejs
- License: mit
- Created: 2015-08-15T12:04:23.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-02-21T02:23:01.000Z (11 months ago)
- Last Synced: 2025-01-15T08:29:12.996Z (9 days ago)
- Topics: json-api, json-api-serializer
- Language: JavaScript
- Size: 191 KB
- Stars: 65
- Watchers: 8
- Forks: 28
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fortune JSON API Serializer
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/fortunejs/fortune-json-api/test.yml)
[![npm Version](https://img.shields.io/npm/v/fortune-json-api.svg?style=flat-square)](https://www.npmjs.com/package/fortune-json-api)
[![License](https://img.shields.io/npm/l/fortune-json-api.svg?style=flat-square)](https://raw.githubusercontent.com/fortunejs/fortune-json-api/master/LICENSE)This is a [JSON API](http://jsonapi.org) serializer for [Fortune.js](http://fortune.js.org/), which implements all of the features in the [base specification](http://jsonapi.org/format/), and follows the [recommendations](http://jsonapi.org/recommendations/) as much as possible.
```sh
$ npm install fortune fortune-http fortune-json-api
```## Usage
```js
const 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 `/api` will 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.## License
This software is licensed under the [MIT license](https://raw.githubusercontent.com/fortunejs/fortune-json-api/master/LICENSE).