一个关于 js 给 RESTful API 带来 undefined 的问题

2018-09-19 10:43:08 +08:00
 gongbaodd

题主今年从前端转型到后端,打算干几年 node 扩充下经验。本来是想找个 graphQL 的工作,可惜国内大部分能做到 RESTful 就很不错了。工作没几天就碰到了这样的问题。

定义一个 POST 接口,如果某个字段是 optional,那应该怎么做

  1. 直接定义它是 optional, 调用接口的时候这个字段可以不传
  2. 定义它是 required & nullable,调用这个接口的时候这个字段可以传 null
  3. 定义它是 required & [default_value],调用这个接口的时候这个字段可以不传,但是 model 层要做兼容

方案一,会接到很多undefined,对其它语言交互不好 方案二,都是 required,要多传很多 null 方案三,要加好多逻辑(我比较懒)

最后我们决定,字段可以不传,在 model 层做兼容,不存在的字段处理成 null

好了,问题来了:

  1. 大家在生产环境是怎么处理这种问题的?
  2. 相信不少人遇到过这种问题,有没有什么现成的中间件能处理这种问题呢?
1620 次点击
所在节点    问与答
8 条回复
agagega
2018-09-19 12:26:21 +08:00
学习下 grpc 的做法?
lovedebug
2018-09-19 12:29:48 +08:00
最好设置成可以传也可以不传,没有传的在 model 层直接映射成默认值了
azh7138m
2018-09-19 12:30:17 +08:00
跨语言强类型接口定义
https://developers.google.com/protocol-buffers/
大概这种东西吗?
gongbaodd
2018-09-19 14:39:56 +08:00
@agagega 感觉如果用上了 grpc,要推动所有团队使用,成本好高啊,感觉这也是 graphql 的问题
gongbaodd
2018-09-19 14:42:52 +08:00
@lovedebug 嗯,目前我们也是类似的做法,只是觉得既然能用 ajv 做 JSON 校验,像这种填充初始值的任务就应该不需要那么多人工
gongbaodd
2018-09-19 14:44:19 +08:00
@azh7138m 有没有办法让交互还是 JSON,但是我们收到的数据能够通过 JSONSchema 自动处理下
lovedebug
2018-09-19 15:12:36 +08:00
@gongbaodd 考虑有 JSONP 做一些验证?
azh7138m
2018-09-19 17:00:29 +08:00

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

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

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

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

© 2021 V2EX