由于平台的数据库是分布的(一般按业务进行分布,例如OA的、人力资源的),加上一个微服务对应一个数据库的默认限制,决定了开放API后台微服务也是多个。从策略上,可以把开放API服务和内部微服务合二为一,即对外系统提供开放API服务,又对内提供业务调用服务。但是不建议这么做。
首先,两种调用的鉴权方式不同,拦截器不同。
其次,从安全角度,对内服务的服务内容更多,开放API一般服务有限,不易混在一起。
最后,分开维护比较方便点。
其他系统访问开放API服务可以直连对应服务器。平台不推荐这个方式,正规做法还是让其他系统统一访问网关,通过访问路由到具体开放API服务。这样也会带来另一个好处,就是API服务也可以根据访问量的不同,启动多个服务。
开放API后台服务路由规则如下:
/openapi/api服务标识/具体服务地址。
/openapi前缀告诉spring gateway这是一个openapi请求,需要使用不同于内部服务调用的鉴权方式。
api服务标识告诉spring gateway路由到那个api服务。