好的,我已经在纸上知道了为什么在进行 RESTful 调用以更新服务器上某物的状态。因此每次都可能返回不同的数据。我知道这是错误的,原因如下:
- HTTP GET 调用应该是幂等的
- N > 0 次调用应该总是得到相同的数据
- 违反 HTTP 规范
- HTTP GET 调用通常是只读的
而且我相信还有更多原因。但我需要一个具体的简单示例来证明,而不是“好吧,这违反了 HTTP 规范!”。 ...或者至少我希望有一个。我也已经阅读了以下内容,这些内容与上面的列表更加相似:Does it violate the RESTful when I write stuff to the server on a GET call? & HTTP POST with URL query parameters -- good idea or not?
例如,有人可以证明上述内容的合理性,以及为什么在以下 RESTful 调用中使用 HTTP GET 是错误的/不好的做法/不正确的吗
"MyRESTService/GetCurrentRecords?UpdateRecordID=5&AddToTotalAmount=10"
我知道这是错误的,但希望它能提供一个示例来回答我原来的问题。所以上面会用 AddToTotalAmount = 10 更新 recordID = 5,然后返回更新后的记录。我知道应该使用 POST ,但假设我确实使用了 GET。
如何确切地回答我的问题,或者这是否会导致实际问题?除了上面项目符号列表中的所有违规行为之外,使用 HTTP GET 执行上述操作如何导致一些实际问题?太多次我遇到这样一种情况,我可以用“因为医生这么说”来证明事情的合理性,但我需要证明并更好地理解这一点。
谢谢!
最佳答案
您会遇到问题的实际情况是,如果 HTTP 实现失败,通常会重试 HTTP GET。因此,在现实生活中,您可能会遇到服务器多次接收同一个 GET 的情况。如果您的更新是幂等的(您的更新是幂等的),那么就不会有问题,但如果它不是幂等的(例如,向某个数量添加一些值),那么您可能会获得多个(不需要的)更新。
HTTP POST 永远不会重试,所以您永远不会遇到这个问题。
关于http - 为什么在 RESTful 调用中使用 HTTP GET 更新服务器上的状态不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10519064/