如何告诉RESTAPI在成功创建资源后接收哪个子资源

如何告诉RESTAPI在成功创建资源后接收哪个子资源,rest,api,http,Rest,Api,Http,我有一个带有购买资源的REST API,每次购买都有一个收据子资源,返回一个包含购买信息的pdf文档 要创建购买,客户需要执行以下操作: POST /purchase 客户端将获得一个201创建的HTTP响应,以及购买的JSON表示 但是,大多数客户希望收到以下格式的pdf收据: GET /purchase/{id}/receipt 客户端可以执行POST/purchase,接收新资源的id并调用GET/purchase/{id}/receipt,以下载收据,但这将意味着发出两个请求,而不是

我有一个带有购买资源的REST API,每次购买都有一个收据子资源,返回一个包含购买信息的pdf文档

要创建购买,客户需要执行以下操作:

POST /purchase
客户端将获得一个
201创建的
HTTP响应,以及购买的JSON表示

但是,大多数客户希望收到以下格式的pdf收据:

GET /purchase/{id}/receipt
客户端可以执行
POST/purchase
,接收新资源的id并调用
GET/purchase/{id}/receipt
,以下载收据,但这将意味着发出两个请求,而不是一个请求


成功创建资源后,是否有RESTful方法指示要接收的子资源?

根据请求,我将我的注释转换为答案:

REST使用HTTP作为在客户端和服务器之间交换消息的传输层。鼓励客户机和服务器遵守HTTP的语义(以及一些其他约束),以保持互操作性并将客户机与服务器API分离

HTTP提供了内容类型协商的概念,客户机可以要求服务器提供某种表示格式,以接收响应。客户通过随请求发出的通知表达其意图。它还可以为服务器提供客户端支持的表示的列表,包括每个媒体类型的权重参数,该参数告诉服务器每个媒体类型的首选顺序。如果客户端同时支持PDF和JSON,但更喜欢PDF而不是JSON,那么它可以发送一个包含类似于

Accept: application/pdf;q=0.9,application/json;q=0.1
我同意你的请求


如果服务器能够将资源状态转换为这两种表示格式,则建议返回PDF表示,因为客户端更喜欢这种格式。如果服务器无法为资源状态生成PDF表示,但能够返回JSON表示,那么它可以返回JSON,因为它被告知客户端仍然可以处理它。但是,如果服务器无法创建表示,客户端可以理解,它必须返回一个状态代码作为响应。

POST如何将JSON与购买及其收据一起返回?@AdamSiemion收据是一个pdf文档。你建议我把它编码在json文档中吗?你为什么要优化它?额外的http调用有什么问题?@RomanVottner这是最安静的方式。请你把它写下来作为回答好吗?