后端接口这样设计是否合理

2020-04-13 11:17:05 +08:00
 Bramblex2

有一个接口会返回如下数据:

{
	A: {a: 'a', b: 'b', c: 'c'},
    B: {a: 'a', b: 'b', c: 'c'}
}

假设当 B 为空时,返回如下数据(因为后端固定了数据结构):

{
	A: {a: 'a', b: 'b', c: 'c'},
    B: {a: '', b: '', c: ''}
}

然后让前端自己去判断 B 是否为空,请问这样是否合理?

是否有相应的设计规范?

7480 次点击
所在节点    程序员
96 条回复
chenqh
2020-04-13 12:20:49 +08:00
@Bramblex2 c++大佬居然写前端去了,这!!!!
superrichman
2020-04-13 12:23:25 +08:00
送礼送个包装袋给我,还要我猜里面送的是什么礼物???
wysnylc
2020-04-13 12:26:16 +08:00
合理
mlxy123123
2020-04-13 12:26:55 +08:00
@est 我看你是看不起我们全 Map 教
buffzty
2020-04-13 13:29:41 +08:00
方案 1: interface Resp{
A:{a: string, b:string, c: string},
B?:{a: string, b: string, c: string}
}
方案 2: interface Resp{
A:{a: string, b:string, c: string},
B:{a: string, b: string, c: string}|null
}
fancy111
2020-04-13 13:33:24 +08:00
哪有什么设计规范,不过是前后端互相协调而已
chendy
2020-04-13 13:38:27 +08:00
建议打死,用个 null 会死么
Chenamy2017
2020-04-13 13:46:46 +08:00
后端不要把这些垃圾数据抛到前端去。
ZSeptember
2020-04-13 13:51:37 +08:00
看 API 定义,都可以讨论
一般是返回 null 或者不返回 key
ChineseCabbage
2020-04-13 13:55:40 +08:00
不合理,把数据丢给前端处理的都是垃圾后端
Lonely
2020-04-13 13:55:41 +08:00
@est 这跟静态语言有啥关系?这种回答还有人感谢……
wunonglin
2020-04-13 13:56:26 +08:00
@Bramblex2 #16

所以才建议你用 B: {a: null, b: null, c: null}
Bramblex2
2020-04-13 13:56:59 +08:00
@chenqh 阴差阳错,当了一年前端 leader,然后再找工作的时候发现如果再去找其他方向的话,可能比较难拿到我理想的薪资,总之还挺蛋疼的
Yuicon
2020-04-13 14:00:24 +08:00
同样的工作 前后端谁做都可以 看来你们前后端关系紧张
cassyfar
2020-04-13 14:03:28 +08:00
后端来搞笑的吧 B 空的话是{}
建议 B 用 null 的,这是 B undefined,不是 B empty,还是有区别的。
Cowhitewhite
2020-04-13 14:09:20 +08:00
我们这都是听前端的,他们是大哥。
Bramblex2
2020-04-13 14:27:30 +08:00
@cassyfar 确切的说 undefined / null / empty 在逻辑上是不一样的,undefined 是不该有这个字段,null 是指有这个字段但是这个字段里面可能没东西,{} 是指这个字段里面有东西,但是没内容。

比如举个简单例子:
profile: null 是指我们没有 profile
profile: {} 是指我们有 profile 但是里面没内容

这是很大区别的。
Bramblex2
2020-04-13 14:31:54 +08:00
@Yuicon

其实我追求的是「正确的是什么」。在工作上的话必然有很多 dirty 的东西不可避免,但我觉得不能因为 dirty 而放弃对正确的追求,否则自己的下限会越来越低,当有机会能去做正确的事的时候,可能就会因为惯性无意识的选择 dirty 的方法而不是正确的方法,也就是所谓的初心变了
sagaxu
2020-04-13 14:44:47 +08:00
@est json 可以忽略 null 字段
est
2020-04-13 14:45:20 +08:00
@Bramblex2 当然 Nullable Type 也能实现,写起来不觉得绕么。。
@tabris17 实现当然都可以实现。就是在静态语言里,膏药要随时到处贴上。。。
@mlxy123123 全 interface 教。。。
@Lonely 跟语言的确没啥关系。但是极有可能是全面依赖的东西传了一个固定形态的 struct 然后手上要输出 JSON 就直接序列化出去了。

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

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

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

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

© 2021 V2EX