基于FastAPI实现简单的微服务API网关


本文阐述了基于FastAPI实现一个API网关的详细步骤。这样未来可以不断的在服务端像搭积木一样添加各种服务。
我们即将实现下面的简单的微服务架构,目前它只实现了请求转发功能:
api gateway架构

本次实现的API网关非常简单,但是我觉得这样的架构已经能解决80%以上的软件架构问题,尤其是做小型系统时,显然这种架构的综合成本会很低

代码实现

下面使用FastAPI的同步和异步两种方式实现http请求转发。
其中services是在本网关中定义的服务名称,path是服务的路径,网关将把这个路径转发到后端服务。
例如:前端使用URL:http://127.0.0.1:8000/translation/trans/v1访问本网关时,@api_route将会把server的值填充为translation,将path的值填充为trans/v1,这样API网关调用的后端服务的API地址为:http://127.0.0.1:5001/trans/v1

  • 同步转发
from fastapi import FastAPI, Request,HTTPException
import requests

# 创建一个FastAPI实例
app = FastAPI()

# 定义服务
services = {
   
    "translation": "http://127.0.0.1:5001",
    # 可以在这里添加其它服务地址
}
'''
services的key是服务名称,客户端在请求时传入服务名称,本网关再根据服务名称找到对应的服务地址
'''


# 接收客户端请求并转发到后端服务
@app.api_route("/{service}/{path:path}", methods=["GET", "POST", "PUT", "DELETE", "PATCH"])
async def gateway(service: str,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值