接口 api,后端结构返回问题?

2019-08-30 10:00:20 +08:00
 Zach369

最近跟 ios 接口联调,ios 说我的 api 接口返回格式不合理。想问问大家工作中是怎么处理的?

我的接口返回样子:

   {
     "data": [
       {
         "id": 28,
         "action": 2,
         "user": {
           "id": 1,
           "name": "zach",
           "avatar": ""
         },
         "topic": {
           "id": "279a11cf-4a21-4772-ba07-5e51b499252d",
           "title": "",
           "content": "我是蛋糕 我在躲猫猫"
         },
         "comment_id": 1,
         "created_at": 1565834869
       }
     ],
     "pagination": {
       "current_page": 1,
       "per_page": 10,
       "total": 1
     }
   }

ios 想要的数据结构:

  {
    "data": [
      {
        "id": 28,
        "action": 2,
        "user_id": 1,
        "user_name": "zach",
        "user_avatar": "",
        "topic_id": "279a11cf-4a21-4772-ba07-5e51b499252d",
        "topic_title": "xxx",
        "topic_content": "我是蛋糕",
        "comment_id": 1,
        "created_at": 1565834869
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 10,
      "total": 1
    }
}

两者之间的变化 就是 将 user 和 topic 对象打散成 key:value 的形式。 想问问广大的后端开发人员以及 ios,大家是怎么处理的那?使用那种返回形式?

8173 次点击
所在节点    API
93 条回复
Airon
2019-08-30 15:49:19 +08:00
作为一个后端,方便的情况下会返回第二个。因为懒得和用户端开发扯皮。
varrily
2019-08-30 15:59:39 +08:00
graphql 是否能解决你们的争议?
0x000007
2019-08-30 16:15:38 +08:00
不出现这种我都能接受
```
{
"data": {
1: {
"id": 28,
"action": 2,
"user": {
"id": 1,
"name": "zach",
"avatar": ""
},
"topic": {
"id": "279a11cf-4a21-4772-ba07-5e51b499252d",
"title": "",
"content": "我是蛋糕 我在躲猫猫"
},
"comment_id": 1,
"created_at": 1565834869
}
},
"pagination": {
"current_page": 1,
"per_page": 10,
"total": 1
}
}
```
Zach369
2019-08-30 16:27:12 +08:00
@0x000007 你的 markdown 没解析出来。没理解你的意思。为什么不能接受第一种那?
hzb
2019-08-30 16:38:17 +08:00
前端,个人理解
为什么有时候更想要扁平化的数据结构
因为有的时候结构如果是 a.b.c 某条数据后端返回的 a 是 null 前端直接报错
难道写代码的时候只要超过 2 层的数据结构 都写 a?.b?.c 这种吗
kkkkkrua
2019-08-30 16:40:56 +08:00
打一架,谁赢了听谁的
自己在 mvc 写个 body 拦截,解析成 ios 要求的不就好了
对于 java 开发不可见,也不必关心,对 iOS 开发他也舒服
EastLord
2019-08-30 16:41:10 +08:00
IOS 想偷懒吧
yehuzi
2019-08-30 16:57:15 +08:00
支持楼主接口+1
banliyaya
2019-08-30 16:59:12 +08:00
作为一个菜鸡前端,我更倾向于第一种,结构很清晰,有些东西分个类比较好。
sth2018
2019-08-30 17:03:21 +08:00
前端,支持你
yanqing07
2019-08-30 17:24:37 +08:00
第一种好。
如果这些数据还需要修改后提交后端更新,第一种直接拿来返回给后端就可以了,后端处理起来也不费力
——来自一个前后端一脚踢的留言
yiqiao
2019-08-30 17:25:22 +08:00
@MetalCore 我怎么感觉你在黑 PHP。。。
1762628386
2019-08-30 17:30:20 +08:00
建议收购公司,夺取话语权,炒他鱿鱼。
WispZhan
2019-08-30 17:37:24 +08:00
把这个 iOS 开了换一个
CantSee
2019-08-30 17:41:38 +08:00
菜鸡感觉,返回参数分类型的,一个类型在一个 json 里面是最好的,这 ios 就是懒
MetalCore
2019-08-30 17:42:08 +08:00
@yiqiao 早期不用 orm 的时候是这样的吧,我不是,我没有,别瞎说(
daguaochengtang
2019-08-30 18:02:54 +08:00
@hzb a?.b?.c 是新的语法糖?好像没有这种写法吧。我平时是 a&&a.b&&a.b.c,这种写法确实是恶心的,但是用层级结构数据确实要更清晰一点。各有利弊吧
daguaochengtang
2019-08-30 18:05:36 +08:00
@0x000007 哈哈,我们 php 也是经常给我返回这种,明明需要数组。php 里这种`1:{},2: {}`形式的好像也叫数组,也是很奇葩了。
Zach369
2019-08-30 18:27:01 +08:00
@nikolausliu 不要黑 php 吧,我也是 php,虽然我也写 golang 和 java。 但是 php 是最好的语言。。。
liukanshan
2019-08-30 18:35:56 +08:00
看关系决定改不改 纠结这种问题没有任何意义

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

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

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

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

© 2021 V2EX