非CRUD和无状态环境中的SOAP与REST

时间:2014-10-10 03:35:01

标签: web-services rest soap

假装我正在构建一个简单的图像处理API。此API完全无状态,只需要请求中的三个项目,图像,图像格式和身份验证令牌。

收到图像后,服务器仅处理图像并返回一组结果。 例如:我在此图片中看到了五张脸。

这仍然适用于基于REST的API吗?它应该与基于REST的API一起使用吗?

我在比较REST和SOAP时看到的大多数示例纯粹是基于CRUD的,所以我对它们在这样的场景中的比较感到有些困惑。

任何帮助都会受到高度赞赏,虽然这个问题看起来很广泛,但我还没有找到解释这个问题的好答案。

1 个答案:

答案 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字段中获取找到的面数。