发现客户端同学和前端的对于接口风格的偏好还是有些不一致的

2021-12-17 11:18:00 +08:00
 zoharSoul

比如 users/{user}/repos 这样的 path param, 对于 android 来说, 因为 retrofit 支持, 写起了体验很好, 所以 android 同事还是很喜欢的. 但是前端同事一般都比较抵触.

再比如只有一两个参数的 post 请求, 用 application/x-www-form-urlencoded ,客户端同事一般没啥意见. 但是前端一般会问能不能用 application/json 的.

还是挺有意思的. 哈哈

7066 次点击
所在节点    程序员
74 条回复
wu67
2021-12-17 13:45:20 +08:00
@xmumiffy >> 一个接口一个实体类谁受得了

有些前端甚至恨不得所有数据都用 ts 写上类型结构啥的呢...
yaphets666
2021-12-17 13:47:39 +08:00
原因就是 formData ,前端需要 let query = new FormData () 然后 append (‘a’,1 )。
json 只需要 let query={a:1}
yaphets666
2021-12-17 13:53:58 +08:00
还有 users/{user}/repos 这种东西。 前端一般是 在一个文件里把请求函数写好,再在组件中引用。
比如说在 api.js 里,定义好.例如 const req = data=> ajax('users/user/repos',data);
如果是这样的 users/{user}/repos 前端需要 const req = field=> ajax(·users/${field}/repos·);这显然有点奇怪

所以说不是个人好恶问题,而是实际开发的问题
yaphets666
2021-12-17 13:57:11 +08:00
总而言之,积极沟通,善待同事,对自己不懂的领域保持敬畏。
icyalala
2021-12-17 13:58:32 +08:00
这其实是取决于各个端在实际开发中使用的网络请求下层封装是怎样的。
nikan999
2021-12-17 14:01:30 +08:00
不同语言对不同格式标准的支持复杂度不一样,两边都是希望往自己开发最简单的方向走的,没有什么问题
yuuko
2021-12-17 14:08:33 +08:00
因为 JSON 相对客户端来说对前端更方便
learningman
2021-12-17 14:11:09 +08:00
写个 builder 呗,都是写一次就能一直用的玩意儿(
Maboroshii
2021-12-17 14:11:09 +08:00
请问你这个是不同的项目吗,同一个项目为啥接口还有不同形式?
marcong95
2021-12-17 14:14:04 +08:00
@zoharSoul #10 实在是很简单的不想写实体类就用个 json 转 map 的解析库咯,一会 json 一会 x-www-form-urlencoded 太精分了吧。。。
vanton
2021-12-17 14:17:12 +08:00
这个明显是客户端在偷懒了。
zoharSoul
2021-12-17 14:17:42 +08:00
@marcong95 那要问客户端同学咋想的了. 反正要啥给啥 /狗头
imnpc
2021-12-17 14:31:34 +08:00
好像是前端 VUE 这种 上传文件麻烦
安卓客户端和 iOS 都是表单提交就过来了
fkdog
2021-12-17 14:49:25 +08:00
最好的方法就是扩展 spring ,
同时 accept 接受 application/json 和 application/x-www-form-urlencoded 两种 request ,
这样你们爱传啥传啥。
zoharSoul
2021-12-17 15:01:34 +08:00
@vanton 为什么不是前端偷懒呢? /狗头
johnnyNg
2021-12-17 15:28:13 +08:00
遇到过一次,接口结构定好了,同时开发,开发完了结果后端告诉我他那边全是 form 类型,当时就感觉日了狗了,我只能在我这边加了个拦截器,json 全部统一转成 form
aguesuka
2021-12-17 16:07:52 +08:00
34 楼是对的, 虽然 spring 解决方案并不优雅
Leviathann
2021-12-17 16:09:39 +08:00
nominal type 就是这个麻烦,一定得定义一个 class/struct 出来
Oktfolio
2021-12-17 16:23:10 +08:00
users/{user}/repos 这种 API ,我只在 Github 等这种国外产品见过。

工作中没有见过其他人用 POST GET DELETE 以外的方法,DELETE 都用得不多。PUT PATCH 没见过有人用。

json 和 fromdata ,能不用 formdata 就不用 formdata 。

只有 GET 使用 x-www-form-urlencoded 。
erguotou521
2021-12-17 16:30:42 +08:00
代码生成治百病

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

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

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

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

© 2021 V2EX