0

有什么区别

HTTPPOST
HTTPDELETE
HTTPPUT
HTTPGET

通常用于提交表单的 post 和 get 方法,我非常了解它们,但想知道 delete 和 put 方法何时以及为何可用于提高编程技能

4

2 回答 2

1

不同方法的作用完全取决于远程 Web 服务器选择如何解释它们。没有固定的含义。服务器不在乎它是否看到GETPOST;相反,最终被执行以服务请求的代码确实(并且可以决定做任何事情,因为它是代码)。

HTTP 协议给出了每个动词应该触发什么样的动作的官方指南,即:

  • GET:检索资源
  • PUT:用另一个资源替换一个资源,如果不存在则创建它
  • DELETE:删除资源(如果存在)
  • POST:可以做任何事情;通常用于“添加”到资源

然而,这种映射最终由应用程序代码控制,并且通常不受 Web 应用程序的尊重(例如,您将看到使用 POST 而不是 DELETE 来执行逻辑删除)。

当谈论基于 HTTP 的REST架构时,情况会更好。

于 2012-07-04T07:46:09.447 回答
1

简而言之:

  • GET = 获取资源。
  • POST = 更新资源。
  • DELETE = 删除资源。
  • PUT = 创建/替换资源。

在 HTML 中,只允许 GET 和 POST。除非您有代码(或配置)来指定您希望它使用不同的 HTTP 方法做什么,否则典型的 Web 开发 HTTP 服务器将什么都不做。

没有什么可以阻止您更新用户数据以响应 GET 请求,但不建议这样做。浏览器处理 GET 和 POST 的方式不同,就缓存请求而言(缓存的 GET 将自动重新发出,但缓存的 POST 会提示用户允许重新发送)并且许多 HTML 元素可以发出 GET,这使得它们不安全更新。还有其他 HTTP 方法http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

许多自称是RESTful的人会将 HTTP POST 和 PUT 与 SQL UPDATE 和 INSERT 混淆。没有直接的相关性,它总是取决于上下文。也就是说,POST 的含义完全取决于您正在与之交互的资源。例如,在博客上创建新条目可以是对博客本身的 POST,或对从属资源的 PUT。但是,根据定义,PUT 必须始终包含整个资源。

通常,您不会允许 HTTP 客户端确定新资源的 URI,因此到 /blog 的 POST 会比到 /blog/ article-uri的 PUT 更安全,尽管 HTTP 确实会在服务器无法提供适当响应的情况下提供尊重预期的 URI。(HTTP只是一个规范,你得写代码来支持它,或者找个框架)

但是,由于您始终可以通过 POST 到负责其下属的父资源来实现 PUT 或 DELETE 用例(即,将消息发布到 /mailbox 而不是将其放在 /mailbox/ message-id),因此不必公开 PUT 或 DELETE 方法。

您可以通过采用 REST 原则来提高您的编程技能,以提高系统内交互的可见性,例如,通过使用统一的界面来根据 REST 对交互进行上下文化可能会更简单。

REST 不是 HTTP:http: //www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

于 2012-07-04T08:31:46.730 回答