Package Exports
- @goa/accepts
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@goa/accepts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@goa/accepts
@goa/accepts is a fork of 🏛 Higher-Level Content Negotiation In ES6 Optimised With JavaScript Compiler.
yarn add @goa/acceptsTable Of Contents
API
The package is available by importing its default class:
import Accepts from '@goa/accepts'class Accepts
The instances of this class allow to negotiate languages, charsets, encoding and types and additionally:
- Allow types as an array or arguments list, i.e.
(['text/html', 'application/json'])as well as('text/html', 'application/json'); - Allow type shorthands such as json;
- Return false when no types match;
- Treat non-existent headers as *.
constructor(
req: !http.IncomingMessage,
): Accepts
Create a new Accepts object for the given request from a client.
- req*
: The request.
!http.IncomingMessage
import Accepts from '@goa/accepts'
import { createServer } from 'http'
import aqt from '@rqt/aqt'
function app(req, res) {
const accept = new Accepts(req)
// the order of this list is significant; should be server preferred order
switch (accept.type(['json', 'html'])) {
case 'json':
res.setHeader('Content-Type', 'application/json')
res.write('{"hello":"world!"}')
break
case 'html':
res.setHeader('Content-Type', 'text/html')
res.write('<b>hello, world!</b>')
break
default:
// the fallback is text/plain, so no need to specify it above
res.setHeader('Content-Type', 'text/plain')
res.write('hello, world!')
break
}
res.end()
}
const server = createServer(app)
server.listen(0, async () => {
const url = `http://localhost:${server.address().port}`
let { body, headers } = await aqt(url, {
headers: { 'accept': 'application/json' },
})
console.log('Response:', body, '\tType:', headers['content-type'])
;({ body, headers } = await aqt(url, {
headers: { 'accept': 'text/html' },
}))
console.log('Response:', body, '\tType:', headers['content-type'])
;({ body, headers } = await aqt(url, {
headers: { 'accept': 'text/plain' },
}))
console.log('Response:', body, '\tType:', headers['content-type'])
server.close()
})Response: { hello: 'world!' } Type: application/json
Response: <b>hello, world!</b> Type: text/html
Response: hello, world! Type: text/plain🔖 View all instance methods in Wiki
Copyright & License
GNU Affero General Public License v3.0
Original work, documentation and testing by Jonathan Ong and Douglas Christopher Wilson under MIT license found in COPYING.
|
© Art Deco for Idio 2019 |
|
|
Tech Nation Visa Sucks |
|---|