前后端协作新模式的实践

来源:互联网 发布:js unicode 编辑:程序博客网 时间:2024/06/03 18:38

一、前后端怎样协作?


后端:

这里写图片描述
(1)开发阶段,接口频繁变更,每次文档都要更新?好烦。。。

(2)接口文档格式五花八门,完全统一准确无误?好难。。

(3)维护文件费时费力还不算产出,毫无动力。。

前端:

(1)接口文档几乎没见过更新

(2)找接口得直接找对口人

于是乎… QQ成为后端联调的主要工具。

问题:

(1)知识不能积淀下来!!!最终接口文档不能从天上掉下来!!!

(2)沟通难免有歧义,调用方式、参数易用错,bug频发!!!

(3)后人维护困难!!!

如何解决?

(1)根据代码生成接口文档!Springfox + Swaggger UI

(2)引入成本:只在现有业务Controller上加一点注解!!!

(3)怎么实现:且听下回分解

二、 Controller怎么重构?


现在的Controller都做了什么?

(1)打印入参log

(2)对参数长度、格式进行校验,若不过则给FE返回参数错误提示

(3)对参数进行业务校验,若通不过则给FE返回业务校验错误提示

(4)调用业务Service,获得返回值

(5)若Service异常,则记录log并给FE返回异常提示

(6)打印出参log

(7)给FE返回结果JSON数据

但是存在问题:

(1)面面俱到,但职责不单一,Controller里业务无关的代码太多。

(2)单靠约定,并不是所有人都可以如此规范、面面俱到。

(3)对参数长度、格式的校验太过繁琐。

(4)通过返回值返回Service中的业务校验结果太复杂

(5)千篇一律的参数打印、异常处理、FE数据返回

(6)不一致的log输出格式,后期自动化分析和自动报警困难

重构:Controller单个方法代码行数减少50%

(1)自动打印Controller的入参和出参,统一规范,业务Controller里不用再手写log了

(2)使用JSR303对参数进行预校验,不用手写代码判断字符串长度、空串等了。

(3)业务Controller里不再需要对JSR303校验结果和业务校验结果进行判断和返回FE了。

(4)统一处理参数异常、业务异常和系统异常,自动打印异常栈,并返回FE异常提示

(5)统一给FE返回数据,业务Controller的方法返回VO即可,不用手动调用responseJsonp

(6)业务Controller里依旧可以打log,处理异常,无影响。

三、 模式实践


0 0
原创粉丝点击