Rest 响应内容类型是否应始终与接受相同?
我有一个具有实体格式原始版本的资源,还有一个更高版本的改进版本,其中包含中断更改 调用者使用Rest 响应内容类型是否应始终与接受相同?,rest,http,Rest,Http,我有一个具有实体格式原始版本的资源,还有一个更高版本的改进版本,其中包含中断更改 调用者使用Accept标题选择更高版本 假设我的服务只返回JSON 响应应该是application/json还是正好是Accept标题中的格式?有人在乎我作弊吗 例如,这是好还是坏: 客户端请求:GET/people/1;接受:application/vnd.personv2+json 服务器响应:200{“Name”:“John”};内容类型:应用程序/json 服务器提供了一个使用JSON的v2 pers
Accept
标题选择更高版本
假设我的服务只返回JSON
响应应该是application/json
还是正好是Accept
标题中的格式?有人在乎我作弊吗
例如,这是好还是坏:
- 客户端请求:
GET/people/1;接受:application/vnd.personv2+json
- 服务器响应:
200{“Name”:“John”};内容类型:应用程序/json
服务器提供了一个使用JSON的v2 person格式,但表示它“只是”普通的应用程序JSON,而不是说它完全是请求的格式。否,
accept
标记了端点可以处理的内容类型。端点可以处理json吗?xml?img?html?等更正式地说:
Accept request header字段可用于指定响应可接受的某些媒体类型。Accept标头可用于指示请求仅限于一小部分所需的类型,如请求内嵌图像的情况
内容类型
是响应在其有效负载中的内容,以便请求发起方知道如何处理。正式地:
Content-Type-entity-header字段表示发送给收件人的实体主体的媒体类型,或者在HEAD方法的情况下,表示如果请求是GET,则会发送的媒体类型
例如,您的web服务器中有一个接受json的端点(例如,客户端的数据{'name':'some name','age':'30'}
),并返回一个图像(例如,30岁的人的描述性图像)。在这种情况下,接受将是application/json
,响应类似于img/*
这也适用于你的情况。接受是一回事,内容类型是另一回事。即使它们在语义上是相同的,它们也不一定是相同的。在这一点上非常清楚:
如果[accept]标题字段为
在请求中出现,但没有任何可用的表示
响应具有列为可接受的媒体类型
源服务器可以
- 通过发送406(而不是 (可接受)响应或
- 通过处理 回应,就好像它不受内容协商的约束一样
application/vnd.personv2+json
时返回application/json
)”很好