我有一个 Stock 资源,它显然是一个库存项目,可以通过...访问它
[Get] /stock/{stockId}
我有一个打印机资源,它是某处的网络打印机,可以通过...访问它
[Get] /printer/{printerId}
我有一个指向服务器上模板文件的模板
[Get] template/{templateId}
现在我想做的是能够向打印机发送请求,以使用特定模板打印特定库存项目。
我的第一个想法是
/printer/{printerId}/printstock?stockId=1&templateId=1
所以我的问题是 -
当它完成打印时,它会更新库存项目以说明它已被打印这是否意味着它应该是一个 POST(或者它应该是一个 PUT?)
URL 中的“printstock”等操作是否是解决此问题的正确方法?
Stock 应该是主 Url 的一部分而不是查询字符串吗?
最佳答案
将打印作业建模为单独的资源。您可以通过POST
ing 到代表所有打印作业的集合资源来创建新的打印作业。
要求:
POST /printjobs
Content-Type: application/json
{
"printer": 1234,
"stock": 1,
"template": 1
}
响应:
201 Created
Location: /printjobs/42
然后您的客户端可以GET
打印作业的状态。
GET /printjobs/42
200 OK
Content-Type: application/json
{
"id", 42,
"state": "PRINTING",
"printer": 1234,
"stock": 1,
"template": 1
}
作业完成后,状态可能会更改为PRINTED
,库存状态可能会以类似的方式更改。
关于用于打印资源的 RESTful url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24555785/