我们有一个API,我们试图使它尽可能的具有REST风格,我们需要为使用者提供一种下载文件的方式,但是我们需要限制每个使用者下载资源的时间;为此,我们添加了以下API:
POST /resource/:resourceId/download
这将创建下载并为使用者返回URI(/resource/downloads/:downloadId
)以获取文件(特别是在Location
HTTP响应标头中),以便用户随后可以获取文件的内容打电话:
GET /resource/downloads/:downloadId
然后,我们返回响应中的内容(状态代码为200
),并将下载内容标记为已在数据库中使用,因此对该相同URI的进一步调用将返回410
(已消失)指定该资源不再可供下载。
问题在于最后一个GET
调用不再是“只读”(“安全”或“幂等”)操作。 将这种用例实现为RESTful的正确方法是什么?