Spaces:
Sleeping
Sleeping
| # accepts | |
| [![NPM Version][npm-version-image]][npm-url] | |
| [![NPM Downloads][npm-downloads-image]][npm-url] | |
| [![Node.js Version][node-version-image]][node-version-url] | |
| [![Build Status][github-actions-ci-image]][github-actions-ci-url] | |
| [![Test Coverage][coveralls-image]][coveralls-url] | |
| Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). | |
| Extracted from [koa](https://www.npmjs.com/package/koa) for general use. | |
| In addition to negotiator, 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 `*` | |
| ## Installation | |
| This is a [Node.js](https://nodejs.org/en/) module available through the | |
| [npm registry](https://www.npmjs.com/). Installation is done using the | |
| [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): | |
| ```sh | |
| $ npm install accepts | |
| ``` | |
| ## API | |
| ```js | |
| var accepts = require('accepts') | |
| ``` | |
| ### accepts(req) | |
| Create a new `Accepts` object for the given `req`. | |
| #### .charset(charsets) | |
| Return the first accepted charset. If nothing in `charsets` is accepted, | |
| then `false` is returned. | |
| #### .charsets() | |
| Return the charsets that the request accepts, in the order of the client's | |
| preference (most preferred first). | |
| #### .encoding(encodings) | |
| Return the first accepted encoding. If nothing in `encodings` is accepted, | |
| then `false` is returned. | |
| #### .encodings() | |
| Return the encodings that the request accepts, in the order of the client's | |
| preference (most preferred first). | |
| #### .language(languages) | |
| Return the first accepted language. If nothing in `languages` is accepted, | |
| then `false` is returned. | |
| #### .languages() | |
| Return the languages that the request accepts, in the order of the client's | |
| preference (most preferred first). | |
| #### .type(types) | |
| Return the first accepted type (and it is returned as the same text as what | |
| appears in the `types` array). If nothing in `types` is accepted, then `false` | |
| is returned. | |
| The `types` array can contain full MIME types or file extensions. Any value | |
| that is not a full MIME types is passed to `require('mime-types').lookup`. | |
| #### .types() | |
| Return the types that the request accepts, in the order of the client's | |
| preference (most preferred first). | |
| ## Examples | |
| ### Simple type negotiation | |
| This simple example shows how to use `accepts` to return a different typed | |
| respond body based on what the client wants to accept. The server lists it's | |
| preferences in order and will get back the best match between the client and | |
| server. | |
| ```js | |
| var accepts = require('accepts') | |
| var http = require('http') | |
| function app (req, res) { | |
| var accept = 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() | |
| } | |
| http.createServer(app).listen(3000) | |
| ``` | |
| You can test this out with the cURL program: | |
| ```sh | |
| curl -I -H'Accept: text/html' http://localhost:3000/ | |
| ``` | |
| ## License | |
| [MIT](LICENSE) | |
| [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master | |
| [coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master | |
| [github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci | |
| [github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml | |
| [node-version-image]: https://badgen.net/npm/node/accepts | |
| [node-version-url]: https://nodejs.org/en/download | |
| [npm-downloads-image]: https://badgen.net/npm/dm/accepts | |
| [npm-url]: https://npmjs.org/package/accepts | |
| [npm-version-image]: https://badgen.net/npm/v/accepts | |