This topic created in 1820 days ago, the information mentioned may be changed or developed.
现在盛行微服务,有些接口是仅供服务之间内部调用的,有些接口是提供给客户端的,那么问题来了,这两种类型的接口返回值类型需要保持一致吗?你们是怎么设计的?
我为什么会有这么疑问呢,因为我在实际开发中发现,如果返回值类型保持一致的话会有一些不方便的地方,比如,客户端接口的返回值一般会有 code,它的值可能会是 200,404,400,500 等等,但服务之间内部调用接口根本不关注这个,只需返回对象里有个布尔类型的变量告诉我调用其他服务到底成功与否就行了,鉴于此,是否可以设计出两种返回值类型?
9 replies • 2021-06-13 13:13:25 +08:00
 |
|
1
xiangyuecn Jun 13, 2021
“但服务之间内部调用接口根本不关注这个” 不管你是不是内部服务还是客户端,只要你调了接口,你就是客户端。 你在纯粹的增加复杂性和心智负担。
|
 |
|
2
dayeye2006199 Jun 13, 2021
应该保持一致性,像上面说的,内部客户也是客户。 你这个 code 检查一下是否在某一段范围内,判断调用是否成功不行吗?
|
 |
|
4
xuanbg Jun 13, 2021
就不能加个布尔类型的 successful ?
|
 |
|
5
xuanbg Jun 13, 2021
客户端一般都不关心 code 是啥,只要不成功,抛出 error message 就完事。
|
 |
|
6
IvanLi127 Jun 13, 2021 via Android
你觉得客户端会在意这种 code 嘛?可能人家压根也没怎么用过呢 所以你也可以不用呐
|
 |
|
7
chenshun00 Jun 13, 2021
参考下阿里云的设计应该内外都是保持的一致的,直接暴露的 API,然后不论是内部还是外部都是调用的 API 。
|
 |
|
8
newtype0092 Jun 13, 2021
如果你说的客户端是一个具体的 toC 的 App,那只应该调用专门给这个 App 提供服务的后端,如果需要其他通用服务,也应该通过 App 后端代理。
如果客户端是指通用服务的请求方,那么不应该区分内部外部。
|
 |
|
9
xiaofan2 Jun 13, 2021
其实一般对外是 API 接口 对内的话都是 rpc 吧 我理解是不是就没有你的这种困扰了?
|