Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fortunejs/fortune-micro-api
Micro API serializer for Fortune.
https://github.com/fortunejs/fortune-micro-api
micro-api
Last synced: about 2 months ago
JSON representation
Micro API serializer for Fortune.
- Host: GitHub
- URL: https://github.com/fortunejs/fortune-micro-api
- Owner: fortunejs
- License: mit
- Created: 2015-08-15T12:02:56.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-12-08T07:46:55.000Z (about 6 years ago)
- Last Synced: 2024-08-10T03:15:16.571Z (5 months ago)
- Topics: micro-api
- Language: JavaScript
- Size: 135 KB
- Stars: 8
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fortune Micro API Serializer
[![Build Status](https://img.shields.io/travis/fortunejs/fortune-micro-api/master.svg?style=flat-square)](https://travis-ci.org/fortunejs/fortune-micro-api)
[![npm Version](https://img.shields.io/npm/v/fortune-micro-api.svg?style=flat-square)](https://www.npmjs.com/package/fortune-micro-api)
[![License](https://img.shields.io/npm/l/fortune-micro-api.svg?style=flat-square)](https://raw.githubusercontent.com/fortunejs/fortune-micro-api/master/LICENSE)This is a [Micro API](http://micro-api.org) serializer for [Fortune.js](http://fortunejs.com), which is compatible with the specification as of **2017-04-25**.
```sh
$ npm install fortune fortune-http fortune-micro-api
```## Usage
```js
const http = require('http')
const fortune = require('fortune')
const fortuneHTTP = require('fortune-http')
const microApiSerializer = require('fortune-micro-api')const options = {
entryPoint: 'http://example.com',
externalContext: '/context.jsonld'
}// `instance` is an instance of Fortune.js.
const listener = fortuneHTTP(instance, {
serializers: [
// The `options` object here is required.
[ microApiSerializer, 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) =>
// When an external context is set, it should be handled externally.
(request.url.indexOf(options.externalContext) === 0 ?
microApiSerializer.showExternalContext(response, options) :
listener(request, response))
.catch(error => { /* error logging */ }))server.listen(8080)
```The `options` object is as follows:
- `entryPoint`: URI to the entry point. **Required**.
- `externalContext`: refer to the `@context` instead of embedding. **Recommended**. This requires some additional setup, so it's disabled by default. This should be valued by a URI to the external context.
- `inflectType`: convert record type name to *PascalCase* in the payload. Default: `true`.
- `reverseFields`: An object keyed by field names, which should use the `@reverse` property.
- `contexts`: An array valued by URIs to external contexts.**Inherited options**:
- `bufferEncoding`: which encoding type to use for input buffer fields.
- `maxLimit`: maximum number of records to show per page.
- `includeLimit`: maximum depth of fields per include.
- `uriBase64`: encode URIs in base64 to discourage clients from tampering with the URI.
- `castId`: try to cast string IDs to numbers if possible.## MessagePack
Instead of using JSON as a serialization format, it can optionally use [MessagePack](http://msgpack.org) instead, with an unregistered media type `application/x-micro-api`. It has the advantage of serializing dates and buffers properly.
```js
const microApiSerializer = require('fortune-micro-api')// Alternative serializer with unregistered media type.
const microApiMsgPack = microApiSerializer.msgpack
```## License
This software is licensed under the [MIT license](https://raw.githubusercontent.com/fortunejs/fortune-micro-api/master/LICENSE).