用于打印资源的RESTful URL

时间:2014-07-03 14:00:27

标签: rest

我有一个股票资源,显然是股票的一个项目,它可以通过..

访问
[Get] /stock/{stockId}

我有一台打印机资源,它是一个网络打印机,可以通过..

访问
[Get] /printer/{printerId}

我有一个模板指向服务器上的模板文件

[Get] template/{templateId}

现在我要做的是能够向打印机发送请求,使用某个模板打印某个库存商品。

我的第一个想法是

/printer/{printerId}/printstock?stockId=1&templateId=1

所以我的问题是 -

当它完成打印时,它会更新库存项目以表明它已被打印这是否意味着它应该是一个POST(或者它应该是一个PUT?)

是" printstock"等行为。在URL中正确的方法来解决这个问题?

Stock应该是主Url的一部分而不是查询字符串吗?

1 个答案:

答案 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,而股票的状态可能会以类似的方式发生变化。