一些接口明明可以用POST请求,却一定要用GET请求呢

为什么一些接口明明可以用POST请求,却一定要用GET请求呢
这个问题涉及到HTTP协议、RESTful API设计以及实际应用场景的考量。虽然POST请求通常用于发送数据量较大的请求,且没有严格的URL长度限制,但仍然有一些情况下,开发者会选择使用GET请求。

我总结目前最主要的原因是GET请求更加适合做分享链接页面跳转
具体原因如下:

1-书签和分享

GET请求可生成URL: GET请求的URL中包含了请求参数,可以直接复制、分享或添加到书签中。这使得用户可以方便地再次访问该接口。
POST请求无法直接生成URL: POST请求的数据通常放在请求体中,无法直接体现在URL上。

2-浏览器缓存

GET请求可缓存: 作为URL的一部分,浏览器会自动缓存GET请求的地址和结果,GET请求的是静态资源,则会缓存,如果是数据,则不会缓存,以提高页面加载速度。GET请求一般用于搜索排序和筛选之类的操作
POST请求不可缓存: POST请求通常用于修改服务器上的资源,其结果不适合缓存。

3-幂等性

GET请求是幂等的: 对于同一个GET请求,无论执行多少次,返回的结果都是相同的。
POST请求不是幂等的: 执行多次POST请求可能会导致多次修改服务器上的资源。

4-安全性

GET请求相对安全: GET请求的数据暴露在URL中,但对于敏感数据,可以进行URL编码。
POST请求更安全: POST请求的数据放在请求体中,相对来说更安全。

5-搜索引擎优化SEO

搜索引擎更友好: 搜索引擎可以抓取GET请求的URL,从而更好地理解网页内容。
POST请求不利于SEO: 搜索引擎很难抓取POST请求的数据。

6-历史原因和约定

传统做法: 在早期的Web开发中,GET请求主要用于获取数据,POST请求主要用于提交表单。
行业规范: 某些行业或组织可能有一些特定的规范或约定,要求使用GET请求。
参数限制: POST能发送更多的数据类型(GET 只能发送 ASCII 字符,并且有长度限制)

7-其他考虑因素

接口设计: 为了保持接口的一致性或简化实现,可能选择统一使用GET请求。
性能优化: 在某些情况下,GET请求的性能可能比POST请求更好。

8-何时优先考虑GET请求:

9-何时优先考虑POST请求:

10-总结

选择GET还是POST请求,需要综合考虑上述因素,并根据具体的应用场景做出判断。一般来说,如果接口返回的数据不经常变化,且不需要修改服务器上的资源,使用GET请求。如果需要发送大量数据或涉及敏感信息,则应使用POST请求。

11-注意事项:

  • POST请求没有严格的长度限制,但GET请求的URL长度是有限制的。
  • 安全性: 对于敏感数据,即使使用GET请求,也应该进行URL编码。
  • 幂等性: 即使是GET请求,也需要考虑幂等性问题,尤其是在分布式系统中。

12-GET请求传参规范

选择GET还是POST请求,没有绝对的标准,需要根据实际情况进行权衡。
深入了解HTTP请求方法,可以参考RFC文档:
RFC7231: Hypertext Transfer Protocol -- HTTP/1.1

13-GET+body的语义:postman是支持的,但是一些浏览器禁止了,会存在兼容性问题

https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.1
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send
https://github.com/axios/axios/issues/787

本文作者:Journey&Flower

本文链接:https://www.cnblogs.com/JourneyOfFlower/p/15735405.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Journey&Flower  阅读(18)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 Not Found REOL
404 Not Found - REOL
00:00 / 00:00
An audio error has occurred.

Fade away

Do over again

Fade away

Utai hajime no hitomojime

Itsumo mayotteru

Douse toritome no nai koto dakedo

Tsutawaranakya motto imi ga nai (Ooh-ooh, oh-oh-oh)

Doushitatte konna ni fukuzatsu nano ni

Kamikudaite yaranakya tsutawaranai

Hora kekkyoku kashi nanka dou datte ii

Boku no ongaku nanka kono yo ni nakutatte ii nda yo

Ii ndarou

Nee sou darou

Everybody don't know why

Everybody don't know much

Boku wa ki ni shinai, kimi wa kidzukanai

Doko ni mo mou inai inai

Everybody don't know why

Everybody don't know much

Wasureteiku, wasurerareteiku

We don't know, we don't know, no, no

Me no mae, hirogaru genjitsu sekai ga mata yuganda

Nando risetto shite mo

Boku wa boku igai no dareka ni wa umare kawarenai

Sonna no shitteru yo

Ki ni naru ano ko no uwasabanashi mo

Shinikaru hyouteki wa tsugi no sokuhou

Mahi shichatteru (Tteru) kokkara esukeepu (Keepu)

Tooku tooku made ikeru yo

Antei nante nai (Na-na-na-na)

Fuanteina sekai (Na-na-na-na)

Antei nante nai (Na-na-na-na)

Kitto ashita ni wa wasureru yo

Fade away

Do over again

Fade away

Souda sekai wa dokoka ga itsumo uso kusai

Kireigoto dake ja daijina hitotachi sura mamorenai

Kudaranai, bokura minna dokoka kurutteru mitai

Hontou no koto nanka zenbu kamisama mo shiranai

Kamisama mo shiranai (Woah, woah, woah, no, woah)

Kamisama mo shiranai (Woah, woah, woah, no, woah)

Kamisama mo shiranai, but

Kamisama mo shiranai (Woah, no, woah, no, woah)

Everybody don't know why

Everybody don't know much

Boku wa ki ni shinai, kimi wa kidzukanai

Doko ni mo mou inai inai

Everybody don't know why

Everybody don't know much

Wasureteiku, wasurerareteiku

We don't know, we don't know, oh, oh-oh-oh

Ahh, oh-oh-oh-oh

Woah, oh-oh-oh

Ooh, ooh, ooh, ooh-ooh-ooh-ooh