无单个资源访问Endpoint时,创建响应的Header及URL应如何设置?
RESTful API 创建资源相关问题解答
1. 当不存在访问已创建资源的Endpoint时,创建响应的Header应包含哪些内容?
- 不返回
Location头:Location的核心语义是提供新资源的可访问URL,既然没有对应Endpoint,返回它会直接误导客户端发起无效请求,违背REST设计的语义一致性。 - 可选返回
Content-Location头:如果响应体直接返回了新创建的资源数据,这个头可以标注该数据的逻辑标识,但必须注意,客户端不能将其当作可调用的Endpoint。 - 按需返回
Allow头:明确告知客户端当前资源支持的HTTP方法集合,避免客户端尝试不支持的操作。 - 可选自定义提示头:比如
X-Resource-Access-Note,内容可以是“该资源无独立访问Endpoint,需通过集合接口查询”,给客户端明确的指引。
2. 若存在创建汽车的POST Endpoint,但仅提供汽车集合的GET Endpoint,响应中的创建URL应如何设置?
- 绝对不能返回
cars/{id-of-new-car}这类不存在的URL,这会让客户端误以为可以通过该地址直接访问单条汽车资源,引发404错误。 - 将集合URL作为
Location头返回:也就是/cars,因为这是客户端唯一能获取到新创建汽车资源的地址,符合当前API的实际能力。 - 在响应体中补充明确说明:可以在返回的汽车数据里增加
access_hint字段,值为“需通过GET /cars接口查询该资源”,或者直接在响应的提示信息里告知客户端访问路径。 - 可选配合
Link头:添加Link: </cars>; rel="collection",用标准的Link语义明确指向资源所在的集合,让客户端更清晰地理解访问逻辑。
内容的提问来源于stack exchange,提问作者thePhenomanalB
相关产品推荐
相关产品推荐

