第一次听说 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 条回复
wangcansun
2020-02-23 01:01:28 +08:00
现在整体范围内,不是 json 才不正常吧。。。。。
json 和前端的对象是通用的,所以 json 对前端来说更友好。
而且现在更多地 api 服务商提供的都是 json 格式吧
chendy
2020-02-23 01:12:45 +08:00
不是 put 用 json,是全部 body 除了文件上传都 json
毕竟 urlencoded 不好处理复杂对象和数组,就全部统一好了
nvkou
2020-02-23 01:17:29 +08:00
编码方式…以为要说 gbk 和 utf8
php 多半是用 curl 做客户端。post 数组会自动转换头为 form encoded。算是后端不精。
另。put 可以有 body 的吗
WytheHuang
2020-02-23 01:17:38 +08:00
@wangcansun 我能理解,问题是前端就一句话不会就让改
nvkou
2020-02-23 01:18:50 +08:00
@nvkou 我睡傻了。以为 options 请求
wangcansun
2020-02-23 01:24:40 +08:00
@WytheHuang 沟通方式确实有问题,不可能说应为不会而不改。。。。别想太多了。。。。
WytheHuang
2020-02-23 01:42:36 +08:00
@wangcansun 他说 erp 系统改动,不知道 erp 是如何改,让我后端按 application/json 来。这一点是我不爽的点。
ss098
2020-02-23 02:03:31 +08:00
根据你的描述如果前后端分离的话,使用 application/json 是很合理的。
lidashuang
2020-02-23 04:03:17 +08:00
rails 来说, 不管 application/json 还是 application/x-www-form-urlencoded 都没框架抽象来

比如直接用 params[:name] 就行

别用 thinkphp 了
lihongming
2020-02-23 04:04:20 +08:00
说参数不对没问题啊,form 方式你收到的是一个数组,各“参数”都都给你分好了。而 json 方式整个 body 都是数据,你自己从 json 对象里找数据,总共就一个“参数”
nvkou
2020-02-23 04:19:55 +08:00
@lidashuang 这个真的要说,对接很多国内公司文档都只说一个 post 根本不提 content type。可现实是 Apache 或 nginx 等很多反代因为安全设置是限制 content type 的。直接 401 比走业务快。
Reficul
2020-02-23 07:59:47 +08:00
按规范来,前端请求里 allow 什么后端返回其中格式的内容,保持头和内容一致。
sujin190
2020-02-23 09:30:16 +08:00
既然如此,为啥不能按 content-type 来解码,前端爱用啥用啥呗,http 都给你定义好了,没必要纠结吧
Muninn
2020-02-23 09:30:20 +08:00
这个问题竟然是一个后端提出的……

难道不是平时都是前端不理解为啥要用 json 去 put 和 post 么……很多框架默认的都不是 json 要加一行 content type

可能 php 是世界上最好的语言吧
manami
2020-02-23 09:34:50 +08:00
我站 application/json
blless
2020-02-23 09:40:30 +08:00
我司都是 json,每个系统都是。除非外部系统,听起来你们 ERP 也是第三方系统,主动适配是应该的。
binux
2020-02-23 09:44:36 +08:00
是你的问题
sadfQED2
2020-02-23 09:53:59 +08:00
我觉得吧,讲道理,application/json 比较合理
cloudzhou
2020-02-23 10:37:49 +08:00
application/json 的表现力,比 application/x-www-form-urlencoded 多多了,尤其是层级多的情况下

如果是文本为主,我赞同你组长的统一规范
sagaxu
2020-02-23 10:43:03 +08:00
tp 用户果然都一样

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

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

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

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

© 2021 V2EX