Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019.08.17 #4

Open
iShawnWang opened this issue Aug 17, 2019 · 0 comments
Open

2019.08.17 #4

iShawnWang opened this issue Aug 17, 2019 · 0 comments

Comments

@iShawnWang
Copy link
Owner

前后端分离, API 定义问题总结

后端现在使用 Java + Swagger annotation 的方式 先给出接口文档, 前后端分离开发
例子 :

{
  "code": 200,
  "data": {
    "xxxCount": "",
    "xxxCode": 0
  },
  "msg": ""
}

但是某些业务场景下, 没有 xxxCountxxxCode 值,
所以直接返回

{
  "code": 200,
  "data": "",
  "msg": ""
}

data'' 的原因是, 后端 api 层会把所有 null 转成 ''

但是, 从前端的角度来看, 和 API 约定的类型完全不一致, 导致前端取值 data.xxxCode 报错


我的想法是, 首先要符合文档的约定, 后端尽量标明 data 可能为 对象 或者
要求后端提供默认值, 也不是太合适, 而且有些默认值还和业务相关, 后端 API 应该保证抽象程度更高, 偏展示的逻辑尽量放在前端

一些其他的前端解决办法

最好的解决办法

optional-chaining 需要 Babel 7+

ViewModel

类似 移动端 的 Model 层 和 Java Bean
https://github.com/vvpvvp/model/blob/master/README_zh.md

方便读取 JSON 数据的工具函数

facebook/idx
safe-touch
Lodash.get

相关讨论

如何和后端沟通,解决api接口返回多层嵌套的json,在中间的某一层为null的问题?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant