据我所知,有三种类型:
不要使用GET和POST 不要使用POST而使用GET 你用哪一个都不重要。
我对这三种情况的假设正确吗?如果有,每个案例都有哪些例子?
据我所知,有三种类型:
不要使用GET和POST 不要使用POST而使用GET 你用哪一个都不重要。
我对这三种情况的假设正确吗?如果有,每个案例都有哪些例子?
当前回答
一个实际的区别是浏览器和网络服务器对URL中可以存在的字符数量有限制。每个应用程序都不一样,但如果你的表单中有文本区域,它肯定是可以达到的。
get的另一个问题是,它们会被搜索引擎和其他自动系统索引。谷歌曾经有一个产品,它可以在你正在浏览的页面上预取链接,所以如果你点击这些链接,它们会更快地加载。它对那些有delete.php之类链接的网站造成了严重破坏。Id =1 -人们失去了他们的整个网站。
其他回答
这就涉及到REST的概念以及web是如何被使用的。在软件工程电台上有一个很好的播客,对Get和Post的使用进行了深入的讨论。
Get用于从不需要更新操作的服务器中提取数据。其思想是,您应该能够反复使用相同的GET请求并返回相同的信息。URL在查询字符串中有get信息,因为它意味着能够轻松地发送到其他系统,人们喜欢在哪里找到一些东西的地址。
Post应该被用于(至少在web基于的REST架构中)将信息推送到服务器/告诉服务器执行一个操作。例如:更新此数据,创建此记录。
HTTP Post数据对数据量没有指定的限制,因为不同的浏览器对GET有不同的限制。RFC 2068声明:
服务器应谨慎 取决于URI长度大于255 字节,因为一些旧的客户端或 代理实现可能不正确 支持这些长度
具体来说,您应该根据它们的用途选择正确的HTTP结构。HTTP GET不应该有副作用,可以被HTTP代理等安全地刷新和存储。
当您想要针对url资源提交数据时,使用HTTP POST。
使用HTTP GET的一个典型示例是在搜索中,即搜索?查询=我+查询 使用HTTP POST的一个典型示例是向在线表单提交反馈。
另一个区别是POST通常需要两个HTTP操作,而GET只需要一个。
编辑:我应该澄清一下——对于常见的编程模式。一般来说,用一个直接的HTML网页来回复一个POST是一个有问题的设计,原因有很多,其中之一就是在按下后退按钮时出现烦人的“您必须重新提交这个表单,您希望这样做吗?”
在短暂的
使用GET来获得安全的和无效的请求 对于既不安全也不幂等的请求使用POST
在细节 每个人都有一个合适的位置。即使您不遵循RESTful原则,通过学习REST以及面向资源的方法是如何工作的,也可以获得很多东西。
RESTful应用程序将对安全且幂等的操作使用get。
安全操作是不改变请求数据的操作。
幂等运算是一种无论你请求多少次结果都相同的运算。
有理由认为,由于get用于安全操作,它们自动也是幂等的。通常,GET用于检索资源(例如,堆栈溢出时的问题及其相关答案)或资源集合。
RESTful应用程序将使用put进行不安全但幂等的操作。
我知道这个问题是关于GET和POST的,但是我马上回到POST。
通常,PUT用于编辑资源(例如,在堆栈溢出上编辑问题或答案)。
POST可以用于任何既不安全也不幂等的操作。
通常,POST将用于创建一个新资源,例如创建一个new SO问题(尽管在某些设计中,PUT也会用于此)。
如果你运行POST两次,你最终会创建两个新的问题。
还有一个DELETE操作,但我猜我可以把它留在那里:)
讨论
实际上,现代网络浏览器通常只可靠地支持GET和POST(你可以通过javascript调用来执行所有这些操作,但是在表单中输入数据和按提交,你通常有两个选项)。在RESTful应用程序中,POST通常也会被覆盖以提供PUT和DELETE调用。
但是,即使您没有遵循RESTful原则,也可以考虑使用GET来检索/查看信息,使用POST来创建/编辑信息。
永远不要对改变数据的操作使用GET。如果搜索引擎抓取到你邪恶行动的链接,或者客户书签,这可能会带来大麻烦。
重要的一点是,你通过GET提交的任何东西都会通过URL被暴露。其次,正如Ceejayoz所说,URL的字符数量是有限制的。