为什么建议GET、POST、PUT、DELETE各司其职了

  • 什么是HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)等协议。

  • HTTP支持的七种情况方式
  1. GET
  2. POST
  3. PUT
  4. Delete
  5. HEAD
  6. Options
  7. Patch
  • 七种方式有什么功能?应用场景是?
  1. GET:
    GET是用于获取资源的(例如html文本,xml,png,json等)。
    安全和幂等。
  2. HEAD:
    HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,但是在这种场景下还是比较适合的:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。rest ful api中很少使用head请求。
    安全和幂等。
  3. PUT:
    用于创建和更新资源,这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。在restful api 中一般使用put更新资源。
    非安全、幂等;
    4.DELETE:
    删除某一个资源。
    非安全、幂等。
    5.POST:
    向服务器提交数据,用于创建资源。
    非安全、非幂等。
  4. OPTIONS:
    这个方法很有趣,但极少使用。用于url验证,验证接口服务是否正常。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
    安全、幂等。
  5. Patch
    用于创建、更新资源,于PUT类似,区别在于PATCH代表部分更新;
    非安全、非幂等;
  • 为什么应该各司其职了

其实不管什么增删改查,对于所有 http 请求,一律采用 POST,也能实现所有的业务,但是为什么不这样了。

  1. post,get,put,delete 是标准,如果大家都采用这种方式,那么调用接口可读性好。毕竟接口除了自己调用外,还需要给别人调用,遵守这样的规则,于人于己都是有利的。
  2. GET 请求可被缓存,请求的记录可以保持到浏览器中, 请求可被收藏为书签。POST 请求不会被缓存,比较安全, 请求不会保留在浏览器历史记录中, 不能被收藏为书签。因为get可以快取, 缓存和保留历史记录及书签等特殊功能。
  • post和put的区别:

post和put的区别在于uri,或者说post用于创建子资源,比如接口:POST /api/person/ 会创建一个资源比如 /api/person/1或者/api/person/2 … 或者/api/person/n,创建了新的uri,而put方法创建资源的uri是 PUT /api/person/1,这样就创建了一个资源,如果1已经存在那么就是更新,所以put并不是只是更新操作。再有post是非幂等的。
通常情况下,我们都会将post、get、put、delete对应到CRUD操作上,但实际上put并不是只能更新。

  • patch的使用:

patch是2010后成为的正式http方法,详见RFC5789,它是对put的补充,在没有patch之前,我们都是用put进行更新操作,这时候我们的接口中通常会有一个逻辑规则,如:如果对象的的一个字符属性为NULL,那么就是不更新该属性(字段)值,如果对象的字符属性是“”,那么就更新该属性(字段)的值,通过这种方式来避免全部覆盖的操作。现在有了patch就解决了这种判断,在put接口中不管属性是不是null,都进行更新,在patch接口中就对非null的进行更新;

  • 什么是幂等性

刚刚对上面的请求方式分别给出了他们是否具有幂等性,可能有些不懂的,可以参考这篇文章:https://blog.csdn.net/shangrila_kun/article/details/89057968

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GET、POST、PUT和DELETE是常见的HTTP请求方法。GET用于获取资源的信息,不会对服务器上的资源产生任何影响。POST用于向服务器提交数据,一般用于创建新的资源。PUT用于更新服务器上的资源,可以用于修改或替换已有的资源。DELETE用于删除服务器上的资源。 综上所述,HTTP请求方法的使用可以归纳为以下几种情况: - GET /url/xxx:用于获取指定资源的信息。 - POST /url:用于创建新的资源,提交数据到服务器。 - PUT /url/xxx:用于更新指定资源,修改或替换已有的资源。 - DELETE /url/xxx:用于删除指定资源。 更多关于这些HTTP请求方法的详细信息,您可以参考以下链接: - https://www.cnblogs.com/weibanggang/p/9454581.html - https://blog.csdn.net/qq_36183935/article/details/80570062 - https://blog.csdn.net/haif_city/article/details/78333213 - https://blog.csdn.net/justry_deng/article/details/80972817/<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Get、Put、PostDelete 含义与区别](https://blog.csdn.net/weixin_49770443/article/details/109805845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [总结get、put、postdelete的区别和用法](https://blog.csdn.net/weixin_56921066/article/details/118608143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值