SaaS开发模式:一般化前后端开发约定与提示

Posted by SFHJavaer on 2024-08-21
Estimated Reading Time 3 Minutes
Words 989 In Total
Viewed Times

接手开发的时候,错误码五花八门,不知道如何传,且错误提示不规范,每次都是在联调的时候,如果不合适前后端再改正,不了解其对接原理

第一种

发现字段可以高亮且对8进行了国际化(8为必填通用型错误码)

无法解析,可以看到不是errortext作为高亮约定

MgError国际化字符会被流处理赋值到mgdto的errortext上,但是直接赋webapierror的message上,不走流,也会最终到errortext上,所以推测转换过程MgError -> webapierror->Mgdto

:::color4
可以看到取field字段(不确定是location还是parameter,但是后台工具类都会放进去)与最后PS的约定可高亮字段表进行匹配

:::

第二种

后端new webapiError仅传入message,返回前端对应到errortext,弹窗为小标,不可国际化

(先明确规范,对于通用型错误码,满足了国际化需求,但是无法定向展示哪个字段,必须得采取高亮对应规避掉这个问题)

也可以判断出通用型的优先级其实是field分支判断是否满足高亮,最终的默认底层框架执行小标弹窗逻辑

第三种

修改为非通用错误码,弹窗逻辑直接为大窗分支(Mangos国际化需求匹配),且实践可以实现国际化(这里从设计上看也不需要依赖field,错误码已经是个性化一对一了)

所以现在接入一个前后端校验需求,一般来说都是强控,后端作为最后一层,按规范应当是要增加校验的

最优解就是前后端约定可高亮字段,根据请求结果高亮字段,缺点是需要一个请求的资源消耗,但是在前后端强控下,这个是最优的

最优解2:也可以前端强控高亮了,如果绕过,后端再高亮,这种更保险,且减少请求次数,缺点是使用了两套控制,修改位置较多不好维护

但是前端为了省事,直接在前端强控不让请求发出,此时后端不开发也不合适

但此时也没有约定高亮字段匹配,所以此种情况会出现如果前端真的被绕过了,后端直接new无法国际化问题,使用封装工具类,8是国际化了,但是返回给前端,前端识别不了字段field,所以前端必须得加

这是前后端交互设计问题。

平时说前后端只做一个就够了,但是实际上,后端这一道是无法省去的,所以最好开始就采用第一种,直接定好各自内容,而非各自单独处理,前端自己加了强控,后端又产生国际化问题,虽然是隐藏问题

如果真的想达到前端也强控,绕过后端也强控的完美效果,目前的设计模式下:最优解2反而是最好的

PS:

code = error = 大窗

约定可高亮字段(标识)

第一种对8进行了国际化,是因为后端使用错误码工具类(内部封装的是给MgError-Field字段设值),且基架返回时会从配置文件取出真正的中英文,下面的无法国际化的message都是自己new的 webapiError,只是把文字赋值给了errortext

所以规范性使用应当:明确最后返回的error是WebApiError的

  1. 用工具类封装mgdto的errors,然后让工具类处理赋回
  2. 只能直接使用WebApiError的时候,先new MgError让其构造处理,然后间接赋值给WebApiError

所以看出系统这里由于规范和外版翻译还原问题,导致错误码返回措施一直不能统一规范,比较杂乱


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !