标题参数:";接受;及;“内容类型”;在REST上下文中

标题参数:";接受;及;“内容类型”;在REST上下文中,rest,http-headers,Rest,Http Headers,我知道,Accept参数定义了从服务器发送的客户端响应中所需的数据类型,因此它被用作响应头 我的问题是关于内容类型,客户机使用它来定义发送的请求的正文格式,我总是将其作为客户机请求的一部分,因此我有一个客户机请求,我在其中使用接受和内容类型设置标题。最近,我遇到了一个项目,内容类型在响应头中定义(由服务器发送)。因此,我的问题是:内容类型需要设置为客户端请求头的一部分或服务器响应头的一部分,或者可以同时设置为两者?阅读相关的RFC。在这种情况下: 用户代理可以使用“接受”标题字段指定 响应可接

我知道,
Accept
参数定义了从服务器发送的客户端响应中所需的数据类型,因此它被用作响应头


我的问题是关于
内容类型
,客户机使用它来定义发送的请求的正文格式,我总是将其作为客户机请求的一部分,因此我有一个客户机请求,我在其中使用
接受
内容类型
设置标题。最近,我遇到了一个项目,
内容类型
在响应头中定义(由服务器发送)。因此,我的问题是:
内容类型
需要设置为客户端请求头的一部分或服务器响应头的一部分,或者可以同时设置为两者?

阅读相关的RFC。在这种情况下:

用户代理可以使用“接受”标题字段指定 响应可接受的媒体类型


“Content Type”(内容类型)标题字段指示媒体的媒体类型 关联表示法

因此:
Accept
表示客户端可以接受来自服务器的哪种响应<代码>内容类型始终与当前请求或响应的内容有关


因此,如果您的请求没有有效负载,则不使用内容类型请求标头。

HTTP客户端使用Accept标头告诉服务器他们希望/更喜欢哪种类型的内容作为响应。客户端和服务器都可以使用内容类型来识别其请求(客户端)或响应(服务器)中的数据格式,从而帮助另一方正确解释信息。

TL;DR

实体标题
内容类型
用于指示资源的媒体类型。在响应中,
Content-Type
头告诉客户端返回内容的实际内容类型。在POST或PUT等请求中,客户机告诉服务器实际发送的数据类型

详细的回答

正如您正确注意到的,HTTP客户端使用
Accept
头告诉服务器哪些响应媒体类型是可接受的。然后,服务器将返回一个响应,其中包括
内容类型
头,告诉客户端实际返回的媒体类型


现在,
内容类型
标题也可以是请求和响应。为什么?那么,考虑一下POST或PUT请求。对于这些请求类型,客户端实际上是将一组数据作为请求的一部分发送到服务器,而
内容类型
头告诉服务器数据实际上是什么,从而确定服务器将如何解析数据。

接受客户端请求头字段可用于指定响应可接受的某些媒体类型

内容类型为实体标题字段表示发送给收件人的实体主体的媒体类型

HTTP头字段提供有关请求或响应或消息体中发送的对象的必需信息。有四种类型的HTTP消息头:

  • 常规标题:这些标题字段一般适用于 请求和响应消息
  • 客户端请求头:这些头字段仅适用 用于请求消息
  • 服务器响应头:这些头字段仅适用 获取响应消息
  • 实体标题:这些标题字段定义有关实体的元信息 实体主体,或者,如果没有主体,关于标识的资源 根据要求。


我可以读懂,内容类型仅用于请求,使用POST或PUT方法,因此不在响应中使用。。他们错了吗?我不会说他们错了,只是他们没有谈论回应(老实说,我还没有读完整的文章)。SoapUI充当HTTP客户端,文本就是从这个角度编写的。但是,如果他们清楚地说,内容类型头只适用于请求,那么是的,他们错了:)