.. | ||
node_modules | ||
index.js | ||
package.json | ||
README.md |
Accepts
Higher level content negotation based on negotiator. Extracted from koa for general use.
In addition to negotatior, it allows:
- Allows types as an array or arguments list, ie
(['text/html', 'application/json'])
as well as('text/html', 'application/json')
. - Allows type shorthands such as
json
. - Returns
false
when no types match - Treats non-existent headers as
*
API
var accept = new Accepts(req)
var accepts = require('accepts')
http.createServer(function (req, res) {
var accept = accepts(req)
})
accept[property]
Returns all the explicitly accepted content property as an array in descending priority.
accept.types()
accept.encodings()
accept.charsets()
accept.languages()
They are also aliased in singular form such as accept.type()
. accept.languages()
is also aliased as accept.langs()
, etc.
Note: you should almost never do this in a real app as it defeats the purpose of content negotiation.
Example:
// in Google Chrome
var encodings = accept.encodings() // -> ['sdch', 'gzip', 'deflate']
Since you probably don't support sdch
, you should just supply the encodings you support:
var encoding = accept.encodings('gzip', 'deflate') // -> 'gzip', probably
accept[property]values, ...
You can either have values
be an array or have an argument list of values.
If the client does not accept any values
, false
will be returned.
If the client accepts any values
, the preferred value
will be return.
For accept.types()
, shorthand mime types are allowed.
Example:
// req.headers.accept = 'application/json'
accept.types('json') // -> 'json'
accept.types('html', 'json') // -> 'json'
accept.types('html') // -> false
// req.headers.accept = ''
// which is equivalent to `*`
accept.types() // -> [], no explicit types
accept.types('text/html', 'text/json') // -> 'text/html', since it was first