将图像添加到GET请求是否是错误的设计模式?

时间:2018-12-08 23:58:29

标签: rest

让我设置一个非常具体的用例...

假设您正在使用Python创建面部识别API。当您以未指定的路线将图像上传到API时,您会获得与该图像匹配的身份列表...返回对象是一个数组:['tom', 'brad', 'john']

您没有上载要在服务器上创建或保留的任何数据。

您没有更新或创建任何东西。

这应该是什么样的请求?我假设是GET请求,因为您要在上传的图片中获取人物的身份,而不考虑您要发送图片进行处理的事实。

1 个答案:

答案 0 :(得分:0)

  

我假设是GET请求,因为您是在上传的图像中获取人物的身份,而不管您是否正在发送图像进行处理

不幸的是,没有。这里的问题是,在HTTP中,GET确实描述了请求中消息正文的语义。

  

GET请求消息中的有效负载没有定义的语义;在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。

您有个正确的主意-请求应该为safe,因此您可以查看HTTP Method Registry以查看是否存在匹配项。这可能会导致您搜索或报告。这些方法是WebDAV定义的扩展,可能会或可能不适合您的问题。

如果可以在查询字符串中包含图像的表示形式,则可以将其与GET配对。我怀疑您会因抱怨标识符太长而遇到组件问题。

TL; DR?使用POST方法将图像有效载荷传递到服务器。