假装我正在构建一个简单的图像处理API。此API完全无状态,只需要请求中的三个项目,图像,图像格式和身份验证令牌。
收到图像后,服务器仅处理图像并返回一组结果。 例如:我在此图片中看到了五张脸。
这仍然适用于基于REST的API吗?它应该与基于REST的API一起使用吗?
我在比较REST和SOAP时看到的大多数示例纯粹是基于CRUD的,所以我对它们在这样的场景中的比较感到有些困惑。
任何帮助都会受到高度赞赏,虽然这个问题看起来很广泛,但我还没有找到解释这个问题的好答案。
答案 0 :(得分:1)
REST与CRUD无关。这是关于资源的。所以你应该问自己:
答案可能是:
图像处理作业是一种资源。
要创建新的图像处理作业,请将HTTP POST
添加到作业集合中。
POST /jobs/facefinderjobs
Content-Type: image/jpeg
此POST
的正文将是图像。
服务器会回复:
201 Created
Location: /jobs/facefinderjobs/03125EDA-5044-11E4-98C5-26218ABEA664
此处03125EDA-5044-11E4-98C5-26218ABEA664
是服务器分配的作业的ID 。
客户现在想要获得工作的状态:
GET /jobs/facefinderjobs/03125EDA-5044-11E4-98C5-26218ABEA664
如果作业未完成,服务器可以回复:
200 OK
Content-Type: application/json
{
"id": "03125EDA-5044-11E4-98C5-26218ABEA664",
"status": "processing"
}
稍后,客户再次询问:
GET /jobs/facefinderjobs/03125EDA-5044-11E4-98C5-26218ABEA664
现在作业已完成,服务器的响应为:
200 OK
Content-Type: application/json
{
"id": "03125EDA-5044-11E4-98C5-26218ABEA664",
"status": "finished",
"faces": 5
}
客户端将解析JSON并检查status
字段。如果是finished
,则可以从faces
字段中获取找到的面数。