Skip to main content

用于根据 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 查看哈希

已上传 source

内置分布

content_negotiation-1.1.1-py3-none-any.whl (11.4 kB 图哈希)

已上传 py3