后台相同的操作,不同的第三方平台,不同的请求和响应内容, 有可能封装成一个统一的操作接口吗

2017-09-20 09:54:28 +08:00
 BBCCBB

大家好, 现在被这个问题困扰了,不知道有没有解决过类似问题的老哥, 先感谢.

情况是这样的, 因为功能涉及到对接多个第三方平台, 但是操作都差不多, 如 查询商品, 预定, 退款, 查询订单信息等, 我原想用一个接口统一操作接口, 但是蛋疼的地方在于每个平台的请求和响应消息体都不一样, 想通过相对来说扩展性高, 以后添加其他平台等都比较方便的方式解决. 大家有遇到过这样的问题吗, 最后又是怎样搞定的呢? 多谢多谢. 头都大啦.

4986 次点击
所在节点    程序员
23 条回复
loveCoding
2017-09-20 14:30:53 +08:00
正好做这方面的工作 ,我的经验是 :
1.对外-针对每个平台分成不同的接入层 , 不要想在一个接口里面做太多的工作,接入层的作用就是请求鉴权,参数解析和响应,处理异常情况 ,一旦涉及到需求变更可以放心大胆的去改. 低耦合,好维护,好写测试.
2.对内-业务逻辑在 service 层 ,这个是你自己系统的业务,肯定是可以做抽象出一部分的.细微区别可以多使用方法重载 ,尽可能的分割函数功能以便重用代码. 尽量做抽象,代码重用,好写测试.

最后: 业务复杂度高了往往是个死结,无解,该 if 就 if ,不过咱们作为开发者写代码时多站在使用者的角度来考虑和设计 api ,为什么很多人推崇测试驱动呢?就是因为写单元测试时你自己是先作为使用者, 你准备设计的 api 好不好用单测一写就知道.
BBCCBB
2017-09-20 15:23:48 +08:00
@mingqing 搜索了一下,还是比较懵逼接口网关...

@loveCoding 老哥,你这两条好抽象, 和我#14 楼有什么相似之处吗?
HaoyangWei
2017-09-20 20:23:35 +08:00
像这种问题没有通过垫一层解决不了的,如果有,那就垫两层。

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

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

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

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

© 2021 V2EX