外部接口如何统一api地址?

kayki


一个非常好的问题。可以试试如下方法:

1,第三方api,使用nginx代理转发

Nginx配置路由转发时,重新拼接路径和参数。

2,自己开发的api,使用url变量,或者在请求参数中增加路由信息

1)路径中包含参数,比如url/{name},Java开发时可以使用@PathVariable读取


2)请求体参数中包含路由信息,解析得到后,实现判断逻辑


急速马力快de源码控


一个外部接口如何统一API地址,这个问题其实是接口网关如何设计。

接口网关的整体架构如下图一所示。

那API-Center对外提供的API地址如何设计呢?

通常的设计方案为 https://${domain}/api-gatway?interface=${interface}

例如上述图中,内部服务包含了订单域,账户域、支付域等业务域,各自定义众多的Dubbo服务接口。

那接口网关如何设计呢?其实就是建立接口映射机制,即类似如下(为了显示更有好,省略了dubbo服务的包名)

interface Dubbo Service

api-createOrder OrderService#createOrder

api-updateOrder OrderService#createOrder

这样对于接口网关的使用方,传入的接口名称为 api-createOrder,但经过网关的转发就能调用到内部的接口。

当然接口网关的设计通常还需包含如下几个设计要点:

1、签名验证

2、协议转换(http接口参数与Dubbo参数映射、返回结果映射)

3、服务发现

4、限流、降级



巅峰架构思维


你可能是分布式服务,每个服务在不同的机器上。你可以使用nginx统一对外代理。

如果JAVA的话,springcloud的话,有spring cloud gateway。


分享到:


相關文章: