第一次听说 PUT 请求编码方式要统一规范的

2020-02-23 00:55:13 +08:00
 WytheHuang

我公司需要建一个新系统(后端是 thinkphp 6),对接接口时候,前端说我接口不对,我看了一下接口和参数,发现参数不对。他请求编码方式 application/json,我的是 application/x-www-form-urlencoded 方式,我就说他参数不对,需要跟我们 ERP 系统一样,他说 erp 系统改过,他不会改,也不知道怎么改。扯来扯去,想让我来改。我当然不愿意改,那我代码自测没问题,还要我来改,最后问组长说统一规范,说以后 put 请求编码方式都用 application/json,我服了。六字真言在心中。哎

3613 次点击
所在节点    程序员
32 条回复
ZSeptember
2020-02-23 10:55:19 +08:00
put 不是用 json+body 吗。
现在主要用的 rest 是这样的。
看看 stripe 的 API 设计,其实 RESTful 的表达能力已经足够了。
MengiNo
2020-02-23 11:56:17 +08:00
看之前习惯和文档情况或者之前项目、公司内部规定了都走 json 就是 json。不然前端随心所欲写个 content-type 然后传个对应的 body 不是给后端徒增麻烦,和什么语言什么框架有什么关系。根本不是 php 还是 thinkphp 能不能解析的问题,反过来说,后端也别返回 json 了,直接 content-type 写个 text/html,body 里搞成 string 就完了。
WytheHuang
2020-02-23 12:03:34 +08:00
ERP 系统项目是用 application/x-www-form-urlencoded, 新项目并没有一开始说要用 application/json, 而是前端对于 ERP 项目用 application/x-www-form-urlencoded 不知道,但他觉得太复杂了,不会改。于是让我来改,最后居然说统一规范。用那个我都可以,问题是由于他的不会,强行规范这一点是我无法忍受的。
TristanYang
2020-02-23 12:09:58 +08:00
除了文件上传,application/json 优先,前端怼的对。
zjie
2020-02-23 12:16:23 +08:00
讲道理,除了文件上传 ,body 里面放 application/json 更好处理,也更加主流。最近几年的系统,应该都是这种格式吧。
MengiNo
2020-02-23 12:22:01 +08:00
@WytheHuang tp 作为一个成熟的框架 tp5 遵循 psr7 之后支持 application/json 应该就就是分分钟的事情。tp6 虽然没有了解过 但是估计最差的情况下就是写一个 middleware 复制一遍就好了。

我猜测你早期的 erp 用的是 jq 所以 $.ajax 默认是 application/x-www-form-urlencoded 格式 现在新项目可能改用 vue 之类的像 axios 包所以默认都是用 json。 换的话他们转一下 data 格式 但是 object.assign 函数不兼容 iOS10 以下的老浏览器 所以就比较麻烦 (我不怎么会前端仅是猜测可能不对)

后端至少在项目范围内肯定要一个统一的格式这个是肯定的,其次 application/json 应该来说是默认的一个比较标准的格式 无论怎么说后端在 restful 的情况下弄成不支持 json 的确是一大失误。
WytheHuang
2020-02-23 12:22:08 +08:00
@TristanYang #23 你看了全文吗,是他不会,而去统一
liukanshan
2020-02-23 14:47:14 +08:00
不论对错 你同事的态度应该有问题 引起你的不适。
wangyzj
2020-02-23 14:48:53 +08:00
这可能是历史遗留问题把
但我觉得还是 json 类型比较好
我建议方向还是改成 json
如果一次性都改不现实的话就分批改
或者做个中间层
iMusic
2020-02-23 15:47:44 +08:00
沟通下统一了改下不就得了,就这也值得抱怨?同事之间关系这么差?
msg7086
2020-02-23 16:57:15 +08:00
Rails 开发人员表示 JSON 和 urlencoded 和 multipart 对我来说都一样……
qile1
2020-02-23 23:25:48 +08:00
datatable 里面读取数据是 steam 模式,要不数据不显示

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

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

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

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

© 2021 V2EX