96 lines
3.1 KiB
Markdown
96 lines
3.1 KiB
Markdown
# Accepts
|
|
|
|
[![NPM version][npm-image]][npm-url]
|
|
[![Build status][travis-image]][travis-url]
|
|
[![Test coverage][coveralls-image]][coveralls-url]
|
|
[![Dependency Status][david-image]][david-url]
|
|
[![License][license-image]][license-url]
|
|
[![Downloads][downloads-image]][downloads-url]
|
|
|
|
Higher level content negotation based on [negotiator](https://github.com/federomero/negotiator). Extracted from [koa](https://github.com/koajs/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)
|
|
|
|
```js
|
|
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:
|
|
|
|
```js
|
|
// 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:
|
|
|
|
```js
|
|
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:
|
|
|
|
```js
|
|
// 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
|
|
```
|
|
|
|
[npm-image]: https://img.shields.io/npm/v/accepts.svg?style=flat-square
|
|
[npm-url]: https://npmjs.org/package/accepts
|
|
[github-tag]: http://img.shields.io/github/tag/jshttp/accepts.svg?style=flat-square
|
|
[github-url]: https://github.com/jshttp/accepts/tags
|
|
[travis-image]: https://img.shields.io/travis/jshttp/accepts.svg?style=flat-square
|
|
[travis-url]: https://travis-ci.org/jshttp/accepts
|
|
[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts.svg?style=flat-square
|
|
[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
|
|
[david-image]: http://img.shields.io/david/jshttp/accepts.svg?style=flat-square
|
|
[david-url]: https://david-dm.org/jshttp/accepts
|
|
[license-image]: http://img.shields.io/npm/l/accepts.svg?style=flat-square
|
|
[license-url]: LICENSE
|
|
[downloads-image]: http://img.shields.io/npm/dm/accepts.svg?style=flat-square
|
|
[downloads-url]: https://npmjs.org/package/accepts
|