比如我们说get是幂等和安全的?是不是说这只是规定,我们也能通过代码把get当post用(非幂等和非安全)
GET POST 是标准,而不只是约定。
约定和标准的区别在于是否被强制执行。
约定的执行靠个人,而 GET POST 作为标准是会被浏览器忠实执行的。
最后我们会发现在至少在浏览器环境中,GET 和 POST 是有一些区别的。
比如:GET 无法传 Form Data,于是在代码里,就无法完全用 GET 替代 POST 。
协议就是这样定的,协议的意思就是一个约定。
如果自己实现客户端服务端,当然可以不管这些约定;不过如果做一些对接,对方恪守约定的情况下,你不守约是不会让你通过的。
这是一个提倡和标准。严格反对滥用。 移动APP和网站都是数据驱动型的上层应用,通信严重依赖于http协议,所以我会建议大家尽可能的了解get和post的区别,不仅仅是一个约定而是一个标准规则。凡是涉及到修改 删除创建操作,不能使用get,差异性还有其他方面,这是其中最重要的一个前提。说深一点,这是专业能力的提现。
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
答案还挺多的, 各种说法的都有, 所以为了严谨起见, 还是决定去做了一些调查
首先结论是, 就GET和POST的安全性和幂等性而言, 这不仅仅是个约定, 是标准, 但是在标准中, 并没有对安全性和幂等性作出约束
为了解决这个问题, 去翻出了RFC 7231文档, 以前的RFC 2616已经被RFC7230 - RFC7235六份协议说明所替代, 关于方法定义的, 在RFC 7231里面
https://tools.ietf.org/html/r...
就题主关心的安全方法和幂等方法而言
RFC 7231的4.2.1章节和4.2.2章节中明确定义了什么是"Safe Methods"(安全方法)和"Idempotent Methods"(幂等方法)
然后 RFC 中定义的标准中, 安全方法的定义是(附自己不严谨的意译)
幂等方法的定义是(同样附上自己不严谨的意译)
所以我的结论就是, 就GET和POST的安全性和幂等性而言, 这不仅仅是个约定, 是标准, 但是在标准中, 并没有对安全性和幂等性作出约束
(这么看来好像说了又等于没说)
== 以下是草率的原答案 ==
甚至还没到约定的层面, 应该说这是一个最佳实践
没有这么干的网站比比皆是
但这不妨碍我们自己来进行这个最佳实践