仅使用POST就符合RESTful

时间:2018-09-18 10:23:09

标签: rest post

直到现在,我仅使用POST方法创建Web服务(不适用于网站)。我认为,如果不是网站,这是一种更安全,更好的方法,因为在发送敏感数据时,这些参数不会存储在Web服务器日志中。

现在我不确定这是否符合RESTful以及最佳方法。我目前的定义是

POST https://{url}/order/getOrder
Content-Type: application/json
{
  "orderId": "42"
}

通常GET-Request是

GET https://{url}/order/42

GET https://{url}/order/getOrder
Content-Type = application/json
{ "orderId"     : 42 }

可能的问题是,是否所有示例都符合REST风格,或者仅是后两个示例。

最好的问候 jd

1 个答案:

答案 0 :(得分:2)

  

现在我不确定这是否符合RESTful以及最佳方法

从技术上讲,我认为不是。 Cache constraints是REST体系结构风格中的头等要事

  

缓存限制要求对请求的响应中的数据被隐式或显式标记为可缓存或不可缓存。

在HTTP规范中,POST被明确列出为cacheable method。但是,缓存无效规范要求对POST请求invalidates先前存储的有效Request URI条目进行非错误响应。

因此对于通常通常为safe操作的查询,您应该使用GET或HEAD。

因此,在您列出的选项中,“符合REST”方法将是

GET https://{url}/order/42

您的第三个选择由于different原因而失败:

  

GET请求消息中的有效负载没有定义的语义

我主要认为这是因为当需要将有效负载视为高速缓存密钥的一部分时,高速缓存很难做出明智的事情。