MarioLuo 最近的时间轴更新
MarioLuo

MarioLuo

V2EX 第 495604 号会员,加入于 2020-06-20 12:18:41 +08:00
MarioLuo 最近回复了
2 天前
回复了 nitouge 创建的主题 程序员 OpenFeign 使用疑惑
服务拆分后各个服务之间通过 http 接口调用,那么第一个问题考虑的是要不要提供客户端?
第一种: 服务分为多个 maven 模块, 例如: user-api, user-provider, 优点代码复用, 缺点就是版本兼容,适合大量接口调用.
第二种: 调用方写代码调用,优点是按需写、灵活,缺点就是代码重复,适合少量接口调用.
第三种: 单独写一个 sdk 项目,优点是复用,缺点单独维护,也可根据 openapi 文档自动生成.

回到你的问题,如果使用第一种方式:
1. API 包种每个接口返回 VO/DTO, 不要直接返回数据库实体类,实体放在实现模块中,实体转换用 mapstract 即可。
2. Feign 中每个接口建议入参和返回都包装一个实体: UserAddReq, UserAddResp 以后便于扩展而不影响调用方,部分原子接口可不用包装比如根据 id 获取用户信息: Result<UserDTO> getUserById(@PathVariable("id") Long id);
3.因为我们是 bff 模式,原子服务的 service 层尽量返回实体,控制层包装转化为 DTO/VO;
4.目前我们是返回的 Result<?>, 然后 Result 里有个 tryThrow()方法,由调用方控制,灵活性更大,也可以用 Decoder 方式;

另外一个小地方命名冲突: 一般会在 bff 服务中请求响应都叫 XXxReqVO, XxxRespVO, 而在原子服务叫: XxxReq, XxxResp 。

我们实际中采用第一种和第二种混合: bff 服务调底层服务用第一种,相对独立或外部的服务调用使用第二种。
根据个人遇到的情况来看,大致是项目没有约定规范、不同开发按照自己的命名和风格随意、新人对项目不熟悉、偷懒对第三方返回数据没有转换,说白了还是技术水平问题,但是归根结底还是管理问题。我的建议了就是提出问题和后端人员,讲道理方式沟通。
2023-03-28 11:07:45 +08:00
回复了 Emptyh 创建的主题 生活 男性买衣服一般去哪
@Emptyh Zara, 优衣库, Gap ,美邦 风格都比较好看,相对 Zara 风格更潮一点,可以都试试看
2022-08-16 11:34:04 +08:00
回复了 shilianmlxg 创建的主题 程序员 BOSS 直聘的那种 im 聊天的是怎么实现的呢
@Goooooos plantuml 好像没这么好看
2022-08-16 08:32:07 +08:00
回复了 shilianmlxg 创建的主题 程序员 BOSS 直聘的那种 im 聊天的是怎么实现的呢
@LeegoYih 请问下用的什么画图工具
2022-08-14 22:55:55 +08:00
回复了 juejinloop 创建的主题 信息安全 chrome 密码泄漏了, 才知道用 chrome 保存密码等于裸奔
才从 lastpass 切换到 google chrome 的密码管理器,如果真是如主题所说的那样,又得切回去了
2022-08-12 10:30:55 +08:00
回复了 voidmnwzp 创建的主题 程序员 手写 api 文档写得想跑路了
@bitmin smart-doc maven 插件 自己扩展下上传到 yapi 可以实现,但是有个问题,多分支开发怎么弄,yapi 本身的文档管理功能没有多分支,多版本的概念
2022-08-12 07:53:38 +08:00
回复了 voidmnwzp 创建的主题 程序员 手写 api 文档写得想跑路了
如果是用的 spring ,可以用这个 Idea 插件,从标准 Java doc 生成代码: https://github.com/jetplugins/yapix
2022-07-26 09:55:29 +08:00
回复了 codingbody 创建的主题 Java Java 项目如何做代码风格的统一管理
在公司内部写了一个 IDEA 插件,定义了代码风格文件,安装插件后会自动设置代码风格,并且在代码提交时候,每次默认勾选 `Code format` `Optimize import`,
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2499 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 19ms · UTC 13:59 · PVG 21:59 · LAX 06:59 · JFK 09:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.