Foo*_*ker 46 .net rest wcf web-services http-method
我正在开发REST WCF服务,理论上我知道何时选择什么目的.
GET 获得资源PUT 更新POST 插入DELETE 删除但是,如果我们不遵循上述规则,假设插入一个我使用过的GET方法的记录,有什么不利之处呢?
Giu*_*olo 47
由于HTTP GET方法被指定为幂等,因此可以重新提交GET请求(假设它不会更改服务器上的任何内容).对于HTTP POST,情况并非如此,按规范可以更改服务器上运行的应用程序的状态.
因此,通过规范,可以对页面执行HTTP GET多次,而不必担心改变其状态.
不遵守规范可能会产生各种不希望的结果.例如,Web爬网程序遵循GET请求来索引站点,但不是POST.如果您允许HTTP GET请求对数据库进行更改,则可以轻松了解它可能具有的不期望的含义.
尊重规范就像尊重您的服务或网站与一系列不同消费者之间的协议,这些消费者可以是普通用户的浏览器,也可以是网络抓取工具等其他服务.
您可以构建一个使用GET来插入记录的站点,但是您也应该期望在使用您的站点时构建的任何内容都在假设您尊重协议的情况下运行.
作为最后一个示例,Web浏览器在用户尝试刷新HTTP POST请求到达的页面时警告用户警告可能会重新提交某些数据.如果HTTP GET请求到达页面,则不会获得该层保护内置浏览器.
你可以在这里阅读更多内容:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
但是,如果我们不遵循上述规则,假设插入一个使用GET方法的记录,那么缺点是什么.
搜索引擎使用GET请求访问您的网页,因此,如果您这样做,Google的抓取工具可能会插入您不想要的记录.
通常,人们会将POST用于任何类型的ajax请求,并在请求的正文中使用实际操作.这没有什么不妥,但是你可以使用这个功能,所以你也可以使用它.
我遇到了我应该使用PUT而不是GET的情况。我有一个向第三方(这是google)的权限插入电话。我旋转了一个Ajax GET请求来请求对我的Servlet的更新权限调用,然后从他们的调用转到外部服务。外部服务花费了大量时间来完成请求。同时,我在服务器日志中看到相同权限调用的重复。一直叫服务器的浏览器说你做完了吗?因为它是GET,浏览器可以调用服务器多次。浏览器遵循标准,而我的代码未遵循。我有不遵守标准的问题。
| 归档时间: |
|
| 查看次数: |
71243 次 |
| 最近记录: |