马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

使用ASP.NET Core 3.x 构建 RESTful API - 3.4 内容协商

[复制链接]
查看2431 | 回复3 | 2019-12-26 09:06:42 | 显示全部楼层 |阅读模式

如今,当评论起 RESTful Web API 的时间,人们总会想到 JSON。但是现实上,JSON 和 RESTful API 没有半毛钱关系,只不外 JSON 恰恰是RESTful API 效果的表述格式。也就是说 RESTful API 还可以使用别的的表述格式,比方 xml 或私有的格式。这也就意味着,我们须要让 RESTful API 知道我们想要返回的格式。而这就是HTTP哀求和相应的核心内容之一:

Content Negotiation 内容协商

内容协商是如许一个过程:针对一个相应,当有多种表述格式可用的时间,选取最佳的一个表述。

当我们的RESTful API只面向一个API消耗者的时间,大概只使用 JSON 一种格式是没有什么标题的。但是假如须要面向各种情势的多个API消耗者,那么很有大概少数API消耗者无法很好的剖析JSON,它们大概更风俗于xml大概别的格式。

那么怎样管理这个标题呢?

HTTP哀求的 Accept Header 就是用来管理这个标题的,API的消耗者在发送哀求的时间,在Accept Header 内里填写好 Media Type(媒体范例),比方 application/json 大概 application/xml等等。

假如哀求里填写的是 application/json,那么RESTful API返回相应的表述格式就应该是 json…

而假如哀求没有填写 Accept Header,那么 RESTful API 只好使用它的默认格式举行相应了。

假如在 Accept Header 内里填写的格式不被 RESTful API 所支持,那么倒是也可以返回默认的格式,但照旧要只管克制这种环境的出现,实在针对这种环境最好的办法是返回 406(Not Acceptable) 状态码,体现 API消耗者哀求的媒体范例是不可担当的,无法将其作为相应的格式。

综上,Accept Header 指的是输特别式。

在 ASP.NET Core 内里对应的就是 Output Formatters。

而用于指定输入格式的 Header是 Content-Type,在 ASP.NET Core 内里对应的就是 Input formatter。

比方 POST 哀求的 body 就须要通过指定 Content-Type 来举行标识,这个 Header 可以看作是自形貌性这个束缚的一部门(每个消息必须包含富足的信息来知道怎样对它举行处置惩罚)。

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则