negotiator

中文文档
1.1.0发布于 2026/08/21MIT近 30 天下载 9亿

HTTP内容协商

中文使用文档
文档目录8 节
  1. 安装
  2. API
  3. 接受谈判
  4. 接收语言谈判
  5. Accept-Charset谈判
  6. 接受编码谈判
  7. 看到也
  8. 许可证

谈判代表

NPM Version NPM Downloads Node.js Version Build Status Test Coverage

一个用于Node.js的HTTP内容协商器

安装

$ npm install negotiator

API

var Negotiator = require('negotiator')

接受谈判

availableMediaTypes = ['text/html', 'text/plain', 'application/json']

// The negotiator constructor receives a request object
negotiator = new Negotiator(request)

// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8'

negotiator.mediaTypes()
// -> ['text/html', 'image/jpeg', 'application/*']

negotiator.mediaTypes(availableMediaTypes)
// -> ['text/html', 'application/json']

negotiator.mediaType(availableMediaTypes)
// -> 'text/html'

您可以在 examples/accept.js。

方法

mediaType ()

从客户端返回最喜欢的媒体类型。

mediaType (availableMediaType)

从可用媒体类型列表中返回最首选的媒体类型。

媒体类型()

返回按客户端首选项排序的首选媒体类型数组。

媒体类型(availableMediaTypes)

的列表中按优先级排序的首选媒体类型数组 可用的媒体类型。

接收语言谈判

negotiator = new Negotiator(request)

availableLanguages = ['en', 'es', 'fr']

// Let's say Accept-Language header is 'en;q=0.8, es, pt'

negotiator.languages()
// -> ['es', 'pt', 'en']

negotiator.languages(availableLanguages)
// -> ['es', 'en']

language = negotiator.language(availableLanguages)
// -> 'es'

您可以在 examples/language.js。

方法

语言()

从客户端返回首选语言。

语言(availableLanguages)

从可用语言列表中返回最首选的语言。

语言()

返回按客户端首选项排序的首选语言数组。

语言(availableLanguages)

的列表中按优先级排序的首选语言数组 可用的语言。

Accept-Charset谈判

availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5']

negotiator = new Negotiator(request)

// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2'

negotiator.charsets()
// -> ['utf-8', 'iso-8859-1', 'utf-7']

negotiator.charsets(availableCharsets)
// -> ['utf-8', 'iso-8859-1']

negotiator.charset(availableCharsets)
// -> 'utf-8'

您可以在 examples/charset.js。

方法

字符集()

从客户端返回最喜欢的字符集。

字符集(availableCharsets)

从可用字符集列表中返回最受欢迎的字符集。

数据集()

返回按客户端首选项排序的首选字符集数组。

数据集(availableCharsets)

的列表中按优先级排序的首选字符集数组 可用的数据集。

接受编码谈判

availableEncodings = ['identity', 'gzip']

negotiator = new Negotiator(request)

// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5'

negotiator.encodings()
// -> ['gzip', 'identity', 'compress']

negotiator.encodings(availableEncodings)
// -> ['gzip', 'identity']

negotiator.encoding(availableEncodings)
// -> 'gzip'

您可以在 examples/encoding.js。

方法

编码()

从客户端返回最优选的编码。

编码(availableEncodings)

从可用编码列表中返回最首选的编码。

encoding(availableEncodings, {preferred})

返回可用编码列表中最受欢迎的编码,同时根据 preferred 相同质量编码之间的数组。

编码()

返回按客户端首选项排序的首选编码数组。

编码(availableEncodings)

的列表中按优先级排序的首选编码数组 可用的编码。

encodings(availableEncodings, {preferred})

的列表中按优先级排序的首选编码数组 可用的编码,而优先级基于 preferred 相同质量编码之间的数组。

看到也

这个 接受 模块建立在 该模块并提供了一个替代接口,mime类型验证, 和更多。

许可证

麻省理工学院

版本与发布记录

negotiator 共发布 29 个版本,首次发布于 2012/01/27;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.1.0latest2026/08/212 个月前
0.6.4legacy2024/10/192 年前
1.0.02024/08/312 年前
0.6.32022/01/234 年前
0.6.22019/04/307 年前
0.6.12016/05/0310 年前

关于 negotiator 的常见问题

negotiator 是什么?

HTTP内容协商

如何安装 negotiator?

在项目目录运行 npm install negotiator,或使用 pnpm add / yarn add / bun add。

negotiator 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/negotiator 是否存在。

negotiator 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

negotiator 可以商用吗?

negotiator 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

negotiator 的下载量有多少?

根据 npm 官方下载统计,negotiator 在 2026/10/05 – 2026/11/03 这 30 天内被下载 896,163,095 次,日均约 29,872,103 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

negotiator 还在维护吗?

最新版本 1.1.0 发布于 2026/08/21(2 个月前);至今共发布 29 个版本,其中过去 12 个月发布了 1 个;首次发布于 2012/01/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。