我有一个股票资源,显然是股票的一个项目,它可以通过..
访问[Get] /stock/{stockId}
我有一台打印机资源,它是一个网络打印机,可以通过..
访问[Get] /printer/{printerId}
我有一个模板指向服务器上的模板文件
[Get] template/{templateId}
现在我要做的是能够向打印机发送请求,使用某个模板打印某个库存商品。
我的第一个想法是
/printer/{printerId}/printstock?stockId=1&templateId=1
所以我的问题是 -
当它完成打印时,它会更新库存项目以表明它已被打印这是否意味着它应该是一个POST(或者它应该是一个PUT?)
是" printstock"等行为。在URL中正确的方法来解决这个问题?
Stock应该是主Url的一部分而不是查询字符串吗?
答案 0 :(得分:6)
将打印作业建模为单独的资源。您可以通过POST
创建表示所有打印作业的集合资源来创建新的打印作业。
请求:
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
,而股票的状态可能会以类似的方式发生变化。