中关村在线

首页 排行 新品 问答 下载 论坛 手机 笔记本 数码相机 主板 显卡 平板电脑 更多

接口编程中,为什么只用get和post?

举报
GE
讨论回答 (10)
goushi880219
skymm520
jonathan168
wudelicai_xiazai
aoi_vv
404734404
wdy926346

打开调试工具我们可以看到除了get和post,还有put、delete方法,那为啥只用到get和post呢?

我们先搞清楚这些方法的用处,在讨论它们的使用。


GET:从服务器检索内容或者实体在HTTP术语。GET请求通常不包含请求体,但是是被允许的。一些网络缓存设备仅仅GET方式响应。GET请求通常不会导致服务器数据变化。

POST:用客户端提供的数据更新实体。一个POST请求通常在请求体中包含信息,这些信息在应用服务器是可以被使用的。POST请求被认为是非幂等性的,意味着如果多个请求被处理和仅仅一个请求被处理结果是不一样的。

PUT:添加一个由客户端提供的数据实体。一个PUT请求通常在请求体包含服务器用来创建新实体用的信息。通常,PUT请求被认为是幂等性的,意味着请求可以反复使用相同应用的结果。

DELETE:删除一个基于URI内容的实体或者由客户端提供的请求体。DELETE请求通常在REST服务请求接口。


其实还有其他一些方法,多是辅助使用的,这里就不谈论了。

可以看到这四个方法分别对应增、删、改、查功能,下面来逐个分析。


GET请求,提供查询功能,可将查询条件拼接在url后面。url是有字符长度限制的,长度根据浏览器和服务器决定,其次由于url是完全暴露的,从安全角度看,涉及重要信息或资源的接口,不推荐使用。

POST请求,是非幂等性的,可局部更新资源也可全量更新资源,非常灵活,而且数据传输使用json格式,非常直观易懂,这也是很多接口采用POST请求的原因。

PUT请求,是幂等性,请求多次结果都是相同的,在实用时有很大的局限性,一般用于非常重要的防重的操作接口,比如发起支付,由于客户端的抖动或其他原因导致重复请求接口,这时可以用PUT请求,但这也导致很多逻辑处理必须在服务器实现,大大降低了服务器的效率,其实防止重复请求接口可以用其他的简便方法处理,这里就不展开谈论了。

DELETE请求,也是幂等性,一般很少有需要删除资源的需求,其次在实用中也很鸡肋。


通过以上分析可以看出,使用最多的POST请求,确实是因为它使用方便,当然也更开发者的习惯有关。以上四个方法,我司都有使用,主要是POST请求为主,其他三个方法根据特定需求使用的。


我是非著名工程师,希望我的回答对你有所帮助,欢迎点赞关注支持,感谢!

zjy0222

对于软件开发行业而言离不开接口(API)的存在,开发人员肯定用过第三方的API也曾自己写过API给其它人调用。就现在而言,API基本上都是Web API形式,而API请求方式以GET和POST居多。但要说接口编程只用GET和POST,这种观点就是错误的!

Web API是当前主流的接口形式

我们常说的“接口”其实是指应用程序接口,也就是API。API将某种业务功能封装起来便于第三方调用,任何一门编程语言都可以用来开发API接口,而API接口的形式众多,较常见的有:

1、基于HTTP协议的Web API

基于HTTP协议的API现在应用最广,因为这类API是跨平台跨语言的,看上去就和URL差不多。当下流行的RESTful API其实也属于Web API,通过HTTP动词(GET、POST、DELETE、PUT等)来表达不同类型的请求。

2、RPC 接口

RPC指的是远程过程调用,本质上是“客户端/服务器端”模式(C/S模式),通过RPC技术可以让调用方像调用本地方法一样快捷的调用远程服务器上的方法。

RPC类接口也支持多种协议(如:HTTP、TCP、UDP、或自定义协议),数据传输方式也是多种多样的(最常用的是 Json、Binary、Protobuf )。

3、Web Service 概念类接口

Web Service 其实并不是特指某一个技术,而是一类以Web形式提供的服务都可以称之为Web Service,像上面说的Web API、RESTful、SOAP等都属于Web Service范畴。

为什么Web API最常用的请求类型是GET和POST?

的确,Web API请求时最常用的请求类型(HTTP动词)是GET、POST。在RESTful风格推出之前,我们的接口传参是少数的一般用GET请求,参数较多的就用POST请求。

但随着RESTful风格推出后,我们是用不同的HTTP动词来代表不同的请求,如:

  • GET:获取资源

  • POST:创建资源

  • PUT:更新资源

  • DELETE:删除资源

但为什么感觉GET和POST居多呢?原因有以下几点:

  • 现在还有很多Web API没有按照RESTful风格建议来编写API

  • 即使是RESTful风格类型的API,PUT、DELETE这类动词其实也是建议在POST动词基础之上的


以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

guan83215070

就为这事,上家公司一前端和后端干起来了,后端写了一接口,用put请求方式,前端开发在火狐浏览器上提示跨域,跨域是nginx统一处理的,换google浏览器、360浏览器都正常访问。然后就让后端看看,后端这哥们不管三七二十一,说在postman请求是ok的,前端这个时候不干了,你这接口访问跨域意味着接口不通呀,要求换成POST,后端同学不干,说我这个是遵循resultful规范的,修改数据就得用PUT,不应该是POST,而且我用postman请求是ok的。



问题来了,这种事情到底是前端处理还是后端处理?


从技术角度来说,我们应该是解决问题,而不应该规避问题对吧?

解决问题的前提是得发现产生问题得本质原因是什么,如果问题能解决,大家就一起解决,如果这个问题属于三方问题,那就只能去规避这个问题。

后来经过大家检查发现是火狐浏览器的一个小bug,不容易复现,那这个问题没法解决了,这个时候就协商让后端改成POST试试,那后端就愿意改了。

后端这哥们的态度就是:“你要说你不行,那咱就给你解决,但是你不能说是我的问题”。

故事说完了~


restful应不应该用?

我个人是倾向于在接口编程中只用get和post的,任你resultful规范的接口说的天花乱坠,可是我写的接口就两种:数据查询就GET,数据变更就POST。但是我也从不限制别人使用PUT、DELETE请求。

但是需要有一些注意的地方,比如有的接口统计是基于nginx日志的,那么resultful风格的接口可能给统计带来一些问题或者额外的工作量。

例如一个商品详情接口:GET xxx/goods/1

你说你要统计这个接口的访问数量,就得走匹配模式,如果是多参数的,或者没有规则前缀的那就无法统计了。

还有的老项目,接口交互用的是表单形式,而不是application/json,那就是清一色的post接口,你也别想着什么规范不规范了。


最重要的一点:接口是写给客户端用的,要和客户端多商量,定义好接口文档。

sixzhaowang
展开查看全部 10 条讨论
精品应用推荐
新浪微博 新浪微博 天气通 天气通 淘宝特价版 淘宝特价版 UC浏览器 UC浏览器
相关问题

接口编程中,为什么只用get和post?

1114 浏览 10 回答

骁龙8gen 3

1.6万 浏览 9 回答

骁龙8 gen 3

1万 浏览 7 回答

GE9300的显卡怎么怎么做才能显示2个显示器

277 浏览 5 回答

Gtx1050比GeForce940m哪个好

1639 浏览 5 回答

扩展阅读

1000元装机极限拉扯《黑神话·悟空》

评论 29

1000元装机极限拉扯《黑神话·悟空》

毒液粉梦中情卡 索泰 GeForce RTX 4070 SUPER-12GB 毒液评测

评论 18

毒液粉梦中情卡 索泰 GeForce RTX 4070 SUPER-12GB 毒液评测

耕升RTX 4070 SUPER 踏雪Mini显卡评测 高性能ITX神器

评论 83

耕升RTX 4070 SUPER 踏雪Mini显卡评测 高性能ITX神器

DIY从入门到放弃:显卡的业界良心FSR你必须懂

评论 1

DIY从入门到放弃:显卡的业界良心FSR你必须懂

十一宅在家,这几款游戏别错过!

评论 1

十一宅在家,这几款游戏别错过!
热门问题

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

1.2万 浏览 6 回答

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

荣耀Magic7 Pro

9739 浏览 1 回答

荣耀Magic7 Pro

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

2.3万 浏览 4 回答

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

肿么找回QQ浏览器历史记录

7296 浏览 6 回答

肿么找回QQ浏览器历史记录

手机在哪里登录192.168.1.1设定页面?

9448 浏览 7 回答

手机在哪里登录192.168.1.1设定页面?

魔兽世界LR怎么把鼠标右键设为自动射击

1.4万 浏览 4 回答

魔兽世界LR怎么把鼠标右键设为自动射击

海尔售后服务24小时服务热线

2005 浏览 5 回答

海尔售后服务24小时服务热线

快手网页版不用下载直接打开

2231 浏览 6 回答

快手网页版不用下载直接打开

免费韩国漫画在线观看的地址有么?

8045 浏览 4 回答

免费韩国漫画在线观看的地址有么?

艺术玻璃门打印机要价钱一台啊?哪家的比较好一点。

251 浏览 6 回答

艺术玻璃门打印机要价钱一台啊?哪家的比较好一点。
最新问答

『求助!』急求.db格式转换成TXT和word格式的具体方法!

5731 浏览 4 回答

『求助!』急求.db格式转换成TXT和word格式的具体方法!

windows8画图如何保存透明图片 说白了就是例如画上个五角星图案,保存后的图片使用起来星星图

897 浏览 5 回答

windows8画图如何保存透明图片 说白了就是例如画上个五角星图案,保存后的图片使用起来星星图

魔兽世界单机版怎么增大天赋属性点,指令是什么?

9329 浏览 5 回答

魔兽世界单机版怎么增大天赋属性点,指令是什么?

单独一篇推文肿么生成二维码

4112 浏览 7 回答

单独一篇推文肿么生成二维码

魔兽世界单机版怎么增大天赋属性点,指令是什么?

9329 浏览 5 回答

魔兽世界单机版怎么增大天赋属性点,指令是什么?
举报
举报成功

经过核实后将会做出处理,感谢您为社区和谐做出贡献。

请选择删除原因
删除成功
确定推荐该回答?
推荐成功

更多频道

频道导航
辅助工具