请问 http协议为什么一定要区分 post,get,put,delete

I_am_a_java_CaiNiao 2016-11-30 09:10:14
如题。

很多资料都说这四个方法对应的是对于资源的增删改查操作。但我的问题是,服务器端的代码是自己写的,到底是增还是删还是改查,不都是我自己代码控制的么?为什么一定要严格按照这种http定义的标准呢?

换句话说,我不管什么增删改查,所有 http 请求,一律用 POST,在业务功能的实现上也没问题吧?

遵循这样的标准有什么好处?请指点,谢谢!
...全文
2361 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
崩溃的油条 2019-12-03
  • 打赏
  • 举报
回复 1
其实搞这种规定, 1、是为了规范设计的 2、是为了偷懒,因为很多人比喜欢写文档,如果你的文档齐全,写什么样子都可以。 因为我在做一个后台项目的时候,接口会传输的字段并不可控, 所以我都是用POST。但是 RESTful 风格让 URL更简约。 更多的时候我们只是在更改参数集操作。而在接口被规定后,几乎很少改动, 接口的命名 也是 增删改查结尾。 这样也好便于理解, list = 分页 data=单个数据 add= 添加 edit = 编辑 delete=删除 如果是客户端 可能接口会有所有变动 因为 虽然本质是增删改查,但是可能叫法又不一样了。 其实无论 用 PUT DELETE也好,只是为了好区分调用者看, 这个规定也并不是一定要遵守,正如 个人运维所说, 硬件防火墙它只 支持 POST GET,和解? 对于明亮的 其实很多时候在 URL编写的时候可以更好的提示给调用者 http://api.mall.a.com/product/list
崩溃的油条 2019-12-03
  • 打赏
  • 举报
回复
一种规范的约束其实在 定义接口的时候完整可以做到更好的理解 比如 全部使用POST请求,这在任何端只要封装一个统一的接口就可以了。比如核心的可以处理更多东西。 比如接口 xxxx/user/info/list xxxx/user/info/data xxxx/user/info/edit xxxx/user/info/delete 而参数完全也可以使用POST 传输,比如有的时候业务要加删字段, 任何一段只要改动参数对象即可
tang15jian 2019-11-13
  • 打赏
  • 举报
回复
这个是RESTful协议约定的吧?
singlever 2019-11-13
  • 打赏
  • 举报
回复
受教了,我之前也是一直在想,取数据这些全用post也没问题,为什么非要区分
W-vergil 2017-05-10
  • 打赏
  • 举报
回复
了解下RESTful api 你就知道为什么了 前后端分离 面向资源 用URL定位资源,HTTP描述操作
sunyufeiss 2017-03-04
  • 打赏
  • 举报
回复
讲解的不错,受教了。
  • 打赏
  • 举报
回复 1
引用 1 楼 bree06 的回复:
所有 http 请求,一律用 POST,在业务功能的实现是没有问题的. post,get,put,delete 是标准, 大家都遵循这样的规则. 这样的api对于它人来说一目了然, get就是获取数据, post就是提交数据, put就是更新数据, delete就做删除操作. 如果一律使用post对一个项目组的内部人员来说是没有问题的, 但是对于对外公开的接口就让调用者摸不着头脑了. 另外这四种方法还有特殊的用意. GET 请求可被缓存, 请求可保留在浏览器历史记录中, 请求可被收藏为书签, get方法具有Safe特性会影响是否可以快取(post不支持快取) POST 请求不会被缓存, 请求不会保留在浏览器历史记录中, 不能被收藏为书签 这就是为什么取数据要使用get而不是post. 因为get可以快取, 缓存和保留历史记录及书签等特殊功能. 除了上面的4种常见方法还有一个很重要的方法PATCH.
了解了,多谢!
bree06 2016-11-30
  • 打赏
  • 举报
回复 8
所有 http 请求,一律用 POST,在业务功能的实现是没有问题的. post,get,put,delete 是标准, 大家都遵循这样的规则. 这样的api对于它人来说一目了然, get就是获取数据, post就是提交数据, put就是更新数据, delete就做删除操作. 如果一律使用post对一个项目组的内部人员来说是没有问题的, 但是对于对外公开的接口就让调用者摸不着头脑了. 另外这四种方法还有特殊的用意. GET 请求可被缓存, 请求可保留在浏览器历史记录中, 请求可被收藏为书签, get方法具有Safe特性会影响是否可以快取(post不支持快取) POST 请求不会被缓存, 请求不会保留在浏览器历史记录中, 不能被收藏为书签 这就是为什么取数据要使用get而不是post. 因为get可以快取, 缓存和保留历史记录及书签等特殊功能. 除了上面的4种常见方法还有一个很重要的方法PATCH.

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧