用于根据 HTTP Accept 标头中的媒体范围确定内容类型的库。
项目描述
内容协商
一个支持内容协商的小型 Python 库。
它用于根据接受标头中的媒体范围列表确定内容类型,以及根据接受语言标头确定内容语言。
- q 值为 0.0 的媒体范围/语言范围将被忽略。
- 高于 1.0 的 Q 值将被视为 1.0。低于 0.0 的 Q 值将被视为 0.0。
- 如果未指定媒体范围,则将其视为
*/*. - 未指定语言范围时,将被视为
*. - 当媒体范围和语言范围相等时,将返回第一个。
有关接受标头的更多信息,请参阅RFC 7231,第 5.3.2 节。有关接受语言标头的更多信息,请参阅RFC 7231,第 5.3.5 节
用法
安装
% pip install content-negotiation
入门
内容类型
from content_negotiation import decide_content_type, NoAgreeableContentTypeError
accept_headers = ["application/json", "text/html", "text/plain, text/*;q=0.8"]
supported_content_types = ["text/turtle", "application/json"]
try:
content_type = decide_content_type(accept_headers, supported_content_types)
except NoAgreeableContentTypeError:
print("No agreeable content type found.")
# Handle error, by returning e.g. 406 Not Acceptable
内容语言
from content_negotiation import decide_content_language, NoAgreeableContentLanguageError
accept_language_headers = ["en-GB;q=0.8", "nb-NO;q=0.9"]
supported_languages = ["en-GB", "en", "nb-NO", "nb", "en-US"]
try:
content_language = decide_decide_language(accept_language_headers, supported_languages)
except NoAgreeableLanguageError:
print("No agreeable language found.")
# Handle error, by returning e.g. 406 Not Acceptable
发展
要求
% pipx install poetry==1.2.0
% pipx install nox==2022.8.7
% pipx inject nox nox-poetry==1.0.1
安装开发者工具
% git clone https://github.com/Informasjonsforvaltning/content-negotiation.git
% cd content-negotiation
% pyenv install 3.8.13
% pyenv install 3.9.13
% pyenv install 3.10.6
% pyenv local 3.8.13 3.9.13 3.10.6
% poetry install
运行所有会话
% nox
使用覆盖率报告运行所有测试
% nox -rs tests
调试
您可以通过传递给 pytest进入Pdb :--pdb
% nox -rs tests -- --pdb --log-cli-level=DEBUG
您可以使用函数直接在代码中设置断点breakpoint()。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
content-negotiation-1.1.1.tar.gz
(10.4 kB
查看哈希)
内置分布
content_negotiation-1.1.1-py3-none-any.whl
(11.4 kB
视图哈希)