Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fortunejs/fortune-http
HTTP integration for Fortune.js.
https://github.com/fortunejs/fortune-http
http-server
Last synced: about 2 months ago
JSON representation
HTTP integration for Fortune.js.
- Host: GitHub
- URL: https://github.com/fortunejs/fortune-http
- Owner: fortunejs
- License: mit
- Created: 2016-10-18T13:52:05.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-02-21T02:20:17.000Z (11 months ago)
- Last Synced: 2024-11-02T03:35:23.749Z (2 months ago)
- Topics: http-server
- Language: JavaScript
- Size: 248 KB
- Stars: 9
- Watchers: 6
- Forks: 9
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fortune HTTP
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/fortunejs/fortune-http/test.yml)
[![npm Version](https://img.shields.io/npm/v/fortune-http.svg?style=flat-square)](https://www.npmjs.com/package/fortune-http)
[![License](https://img.shields.io/npm/l/fortune-http.svg?style=flat-square)](https://raw.githubusercontent.com/fortunejs/fortune-http/master/LICENSE)This is a HTTP implementation for Fortune.js, which includes default serializers for JSON, HTML, form encoded and form data. **This module is required for other HTTP serializers.**
```sh
$ npm install fortune-http --save
```## Usage
Consult the [source code](https://github.com/fortunejs/fortune-http/tree/master/lib) or the [documentation website](http://fortune.js.org/api) for more information.
```js
// Use the Node.js core HTTP implementation.
const http = require('http')// The alternative `uWS.http` implementation may be supported:
// const http = require('uws').httpconst fortuneHTTP = require('fortune-http')
// Pass in a Fortune instance and an optional options object.
const listener = fortuneHTTP(fortuneInstance, options)const server = http.createServer((request, response) =>
listener(request, response)
// Make sure to catch Promise rejections.
.catch(error => {
console.error(error.stack)
}))
```For use with middleware frameworks such as Express:
```js
const express = require('express')
const fortuneHTTP = require('fortune-http')const app = express()
const listener = fortuneHTTP(fortuneInstance, options)// Make sure that the Fortune listener is last in the middleware stack,
// since it ends the response by default (this can be optionally disabled).
app.use((request, response) =>
listener(request, response)
.catch(error => { ... }))
```## Customization
The HTML serializer has some customization options.
- `prefix`: a prefix to add to *every* route. Default: `""` (empty string).
- `indexRoute`: path to the index route. Default: `""` (empty string).
- `injectHTML`: passing this option as a String to the HTML serializer will include it in the response.On record type field definitions:
- `inputOnly`: on a record field definition, setting this property to true will mark it as an input only field. Combined with making the field non-enumerable, virtual inputs can be defined.
- `outputOnly`: on a record field definition, setting this property to true will hide it from input.The form serializers interpret a few special fields.
- All payloads must include cookie values, prefixed with `CSRF_` to prevent Cross-Site Request Forgery attacks.
- The special field `__method__` may be used to override the method, which may be valued by any method that Fortune.js accepts.## Demo
By installing the development dependencies, one can run the test instance locally:
```
$ npm i && npm run demo
```## License
This software is licensed under the [MIT license](https://raw.githubusercontent.com/fortunejs/fortune-http/master/LICENSE).