同事说:后台接口不能使用除 post/get 之外的方法,path 里不能带参数

2020-01-02 16:42:17 +08:00
 unco020511

我写了接口文档,尽量按照 RESTful 风格写的,然后前端+部分后台同事说不能用 put 和 delete,还有 path 里不能带参数; 我问为啥,他说这样不规范 我该如何说服同事?

获取对应学期下评语:[get] /back/remark/{termId} 删除数据:[delete] /back/record/{recordId}

22172 次点击
所在节点    Java
181 条回复
crs0910
2020-01-02 17:27:36 +08:00
evlos
2020-01-02 17:31:53 +08:00
你同事说这样不规范,就显得他很弱智了
ic2y
2020-01-02 17:34:51 +08:00
@passerbytiny 我回复了这么多,不是说不能实现。企业都是讲“成本”的,不是为了支持黑科技或者新特性。 成本:不光是 开发人员的开发成本和接入成本、还有服务器( client 和 server )的内存消耗和 CPU 消耗。

如果支持 RESTful 风格 很容易支持的话,早就全支持了。 业务方不允许你的采集程序占用额外的内存和 CPU,自己部署的中间件平台为了额外的模式提取需要付出性能代价 而加机器。这些个都是成本制约。

如果 RESTful 风格 在没有上下文的前提下,很容易像 POST 一样提取模式,无其他明显成本消耗,就不会这么不建议了。


api?k1=v1&k2=v2 (没有上下文,各个系统能快速解析)



api/k1/v1/k2/v2 或者 /mock/a/k1/v2 (没有上下文,面对海量的各种地址的 URL 请求,需要付出额外的资源进行解析)
zhaohua
2020-01-02 17:36:49 +08:00
@szq8014 后台 php 的话就全部都是 get 了,我个人觉得只使用 get post 的简易 restful api 挺好的
rimutuyuan
2020-01-02 17:36:56 +08:00
有人把 http 当做传输协议,自己在 body 中定义业务
总之,能正常使用就可以了
chenliangngng
2020-01-02 17:43:31 +08:00
站在前端的角度,delete 永远都不应该用,put 有风险应该在安全性没什么问题的时候才能考虑使用
lihongjie0209
2020-01-02 17:45:57 +08:00
@crs0910 #41
https://stackoverflow.com/questions/978061/http-get-with-request-body
自己去翻协议标准去, 没有任何地方定义了 Get 可以使用 Body

至于说框架 /标准库支持, 那是实现方的具体实现, 没有任何实际意义.

等你部署上线的时候, 你的服务器支持, 但是负载均衡不支持, 客户端类库不支持, 那么你这个还叫 http 服务器??
IGJacklove
2020-01-02 17:49:07 +08:00
这个写之前不先问一下老大的吗。。。
IMCA1024
2020-01-02 17:53:05 +08:00
那就 GET ,POST 吧
虽然我也赞同用 HTTP 动词描述操作
但有时候没办法
可能有时候运维那一层就把你的 PUT PATCH DELETE 给干掉。)
Infernalzero
2020-01-02 17:53:40 +08:00
作为规范没啥问题,做工程就是这样,不能太学院派,规范是人定的,可以根据实际需求变更。
不准用 PathVariable 最直接的原因就是访问量上去后影响匹配性能
676529483
2020-01-02 17:54:19 +08:00
反正这点我也早就服气了,restful 接口并不能带来实质的改变,本质是前端的配合、公司的包袱,反正区别也不大。状态码使用{"code": 200}同理
zachlhb
2020-01-02 18:00:22 +08:00
很正常,很多前端框架不支持除 get,post 之外的请求方式,比如百度小程序就只支持 get,post
KuroNekoFan
2020-01-02 18:19:37 +08:00
个人比较喜欢 search param,也很少用 path param
cloudyplain
2020-01-02 18:20:18 +08:00
/back/remark/{termId} 这种风格,在 metrics、tracing 时都及其蛋疼,忽略一个很容易内存爆掉,正则分析也是资源杀手,建议少用。
jjshare
2020-01-02 18:25:06 +08:00
实话说,我就非常非常反感 一个 URL 通过 method 来区分
沟通起来费

我个人在实践里面,和前面别人提到的一样,API 只用 POST,URL 里不加参数,统一 data 传参数
wangyzj
2020-01-02 18:38:06 +08:00
公司有规定就按照规定来呗
beastk
2020-01-02 18:46:38 +08:00
记得遇到一个坑,php5.x 版本,用 put 方式传 form 表单二进制数据时,得自己获取数据。
jss
2020-01-02 18:57:17 +08:00
这年头搬砖的都来敲代码,就不要太讲究了…
wc951
2020-01-02 19:00:35 +08:00
你要反思一下为什么只能呆在这么 low 的团队里了
finian
2020-01-02 19:11:23 +08:00
说不规范是不符合团队的规范,没毛病,又不是只有 RESTful 一种风格

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/634514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX