RESTful GET与图像

时间:2012-04-07 12:48:32

标签: image rest

我有一个REST API,我正在添加一个新功能,允许用户根据他们提供的条形码图像GET来自资源的一些信息。

我的问题是:在最佳做法方面做到这一点的正确方法是什么?

以下是我对此问题的一些看法。

获取:

使用GET,我通常会在URI中指定条件:foo?name=bar,但以相同的方式传递图像数据很可能会因长度(looking at this)而失败。

根据these answers,在正文中传递数据而不是URI似乎也不是一个好的解决方案。

发表:

然而,我可以使用POST请求,但这不是非常RESTful,因为我只检索信息。

3 个答案:

答案 0 :(得分:4)

您的资源将执行两项操作

  1. 分析条形码图像并获得一些ID
  2. 使用从一些(数据)源检索到的客户端提供信息 上面的id
  3. 您可以将条形码图像分析为资源条形码。此资源接受通过 POST 提交的图像的请求分析条形码图像(1)并返回位置标题中可用于检索某些数据的网址(2)

    这种方法将您想要实现的两个功能分成两个资源/步骤。

    你通过这种方法获益:

    • REST符合接口
    • 您可以决定异步处理条形码图像提取任务,只返回位置标题中的URL以检索有关条形码提取过程的状态
    • 条形码分析和信息检索的独立功能

答案 1 :(得分:1)

首先,通过POST请求将图像(文件)数据从浏览器传递到Web服务器的唯一方法是。当您正在寻找最佳解决方案时,请注意这一点。

其次,RESTful资源模型的含义是资源具有非常短的字符串或数字的标识符,并且在创建时由服务器分配以供客户稍后使用。

您的问题并不适合REST模型。所以你很清楚继续使用在实践中运作的任何方法。

答案 2 :(得分:0)

在RESTful服务资源上使用一组固定的操作进行操作:

PUT : creates a new resource, which can be then deleted using DELETE
GET : retrieves the current state of a resource
POST: transfers a new state onto a resource

在您的情况下,您应该寻找 GET 操作。 具有大量输入数据的请求的问题不能在URI中编码(即,错误414:URO太长)) 只有在URI中传递long参数时才有问题, 这是REST的一个限制, 对于重新启动这不是问题,我尝试过一种REST服务,其中服务返回一个XML文件。