Body 传参时,有没有必要将查询参数用一个字段包起来

2024-03-15 11:05:15 +08:00
 unt

例如: POST /api/client

1. Body 参数
{
  pageIndex:1,
  pageSize:10,
  area:123,
  type:1,
  star:1
}
2. Body 参数
{
  pageIndex:1,
  pageSize:10,
  pBody:{
    area:1,
    type:1,
    star:1
  }
}

哪种方式比较好,我知道都可以,只是习惯问题,但是应该是有一些历史遗留原因或者道理的,可能是语言间的开发差异导致,可能是开发人员的习惯导致,可能是由。。。。。。。

请问 V 友们你们更倾向于哪种方式,原因是什么

5950 次点击
所在节点    程序员
40 条回复
28Sv0ngQfIE7Yloe
2024-03-15 11:07:55 +08:00
第一种,比较适合继承

第二种,比较适合组合
nitmali
2024-03-15 11:08:23 +08:00
得看后端怎么处理的,个人倾向第二种,pageIndex ,pageSize 可以抽出来继承(我是前端)
iyiluo
2024-03-15 11:09:37 +08:00
第二个,结构化,你这字段比较少,遇到几百个字段的 json ,都塞在一层,就变成一坨了,分分钟变成屎山。
sdwgyzyxy
2024-03-15 11:10:43 +08:00
第二种定义结构体比较好,而且可以拿任意一部分调用其他模块,所以,推荐第二种
unt
2024-03-15 11:11:55 +08:00
@iyiluo #3 现实情况是没有几百个字段的情况,最多不超过 20 个。现在要定统一规范,在此之前我司是两种并行的
unt
2024-03-15 11:15:50 +08:00
然后这是 POST 的查询方法,对于更新类的方法,没有 pageIndex 和 pageSize ,这时候一个裸的 pBody 是否会很奇怪
mysdemon
2024-03-15 11:17:45 +08:00
java 后端,1 和 2 都用过,一般的查询接口倾向于第一种,架构中有分页参数公共类,继承一下就可以了,第二种的继承要实现范类,名称要固定。如果公司没有规定确定的名称规范,建议用第一种
chenliangngng
2024-03-15 11:24:59 +08:00
直接抄大厂解决方案就可以了,第二种
siweipancc
2024-03-15 11:26:17 +08:00
分页属性必须抽象一层,方便互传。查询用第一种,继承。
unt
2024-03-15 11:30:55 +08:00
@chenliangngng #8 在哪里可以看到大厂示例,我看到很多比如阿里云的公开接口,参数都是直接平铺裸露在外面的
deepshe
2024-03-15 11:40:32 +08:00
之前见过分页属性放到 header 里,这样就不影响 body 了
estk
2024-03-15 12:12:42 +08:00
楼主这种情况还不如用 graphql
KKKKKKKKKKKKKKKK
2024-03-15 12:14:19 +08:00
第二种
wolfie
2024-03-15 12:19:23 +08:00
第一种
第二种写个接口看看,难受不难受。
zhy0216
2024-03-15 12:22:29 +08:00
看 area type star 是否是同时存在或不存在
如果是的 第二种好
不是都可以
BeautifulSoap
2024-03-15 12:22:38 +08:00
@unt 你好,现实是一个请求有几百个字段是存在的。最近就接触到了一个几百个字段的项目
unt
2024-03-15 12:28:20 +08:00
@zhy0216 新增和编辑的时候是同时存在,查询的时候是可能存在可能不存在
wanniwa
2024-03-15 13:00:11 +08:00
第二种,因为你有的时候还是会返回 list 数据
{
"pageIndex": 1,
"pageSize": 10,
"data": [{
"area": 1,
"type": 1,
"star": 1
},{
"area": 2,
"type": 2,
"star": 2
}]
}
wanniwa
2024-03-15 13:02:53 +08:00
如果是单条根据 id 查询的接口,那应该也不会有 pageIndex ,pageSize 这个两个分页字段了,就直接下面这样就行了
{
"area": 2,
"type": 2,
"star": 2
}
unt
2024-03-15 13:05:36 +08:00
@wanniwa #18 你这是返回,我指的是请求,返回不会是这样返的

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

https://yangjunhui.monster/t/1023889

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

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

© 2021 V2EX