我正在开发 REST WCF 服务,理论上我知道什么时候选择什么目的。
GET
获取资源PUT
更新POST
插入DELETE
删除
但是如果我们不遵循上述规则,假设插入一条记录我使用的GET
方法有什么缺点?
我正在开发 REST WCF 服务,理论上我知道什么时候选择什么目的。
GET
获取资源PUT
更新POST
插入DELETE
删除但是如果我们不遵循上述规则,假设插入一条记录我使用的GET
方法有什么缺点?
由于 HTTP GET 方法被指定为幂等的,因此可以根据规范重新提交 GET 请求,假设它不会更改服务器上的任何内容。这不是 HTTP POST 的情况,根据规范,它可以改变服务器上运行的应用程序的状态。
因此,按照规范,可以对页面执行 N 次 HTTP GET,而不必担心更改其状态。
不遵守规范可能会产生各种不良结果。例如,网络爬虫通过 GET 请求来索引站点,而不是 POST。如果您允许 HTTP GET 请求对数据库进行更改,您可以轻松理解它可能产生的不良影响。
尊重规范就像尊重您的服务或网站与一系列不同消费者之间的协议,这些消费者可以是普通用户的浏览器,也可以是网络爬虫等其他服务。
您可以构建一个使用 GET 来插入记录的站点,但您还应该期望,为使用您的站点而构建的任何内容都是在您遵守协议的假设下运行的。
作为最后一个示例,当用户尝试刷新由 HTTP POST 请求到达的页面时,Web 浏览器会警告用户可能会重新提交某些数据。如果 HTTP GET 请求到达该页面,则您不会获得内置浏览器的那一层保护。
你可以在这里阅读更多:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
But what is the disadvantage if we don't follow this above rule, suppose to insert a record i used GET method.
Search engines access your pages using GET requests, so if you did this, google's crawler might insert records that you didn't want.
Often, people will use POST for any kind of ajax request, with the actual action in the request's body. There's nothing very wrong with this, but the feature is there for you to use, so you might as well use it.
我遇到了一种情况,我应该使用 PUT 而不是 GET。我有一个权限插入调用给第三方(这是谷歌)。我向我的 Servlet 发送 Ajax GET 请求以更新权限调用,并从他们的调用转到外部服务。外部服务花费了大量时间来完成请求。同时,我在服务器日志中看到了相同权限调用的重复。是浏览器不断调用服务器说你完成了吗?因为它是 GET 并且浏览器可以尽可能多次调用服务器。浏览器遵循标准,而我的代码没有。我有不符合标准的问题。