我正在处理一个需要我对快速 API 端点进行版本控制的项目。我们希望通过 HTTP 接受 header 对端点进行版本控制,例如headers={'Accept': 'application/json;version=1.0.1'}, headers={'Accept': 'application/json;version=1.0.2'}强>。只设置这样的api版本似乎行不通:
app = FastAPI(
version=version,
title="A title",
description="Some description.",
)
有人知道我还需要做什么吗?
最佳答案
也许路径 url 中的版本会更好
from fastapi import FastAPI
app = FastAPI()
v1 = FastAPI()
@v1.get("/app/")
def read_main():
return {"message": "Hello World from api v1"}
v2 = FastAPI()
@v2.get("/app/")
def read_sub():
return {"message": "Hello World from api v2"}
app.mount("/api/v1", v1)
app.mount("/api/v2", v2)
您将看到每个应用的自动文档
localhost:8000/api/v1/docs
本地主机:8000/api/v2/docs
但是你总是在请求中得到标题
from starlette.requests import Request
from fastapi import FastAPI
app = FastAPI()
@app.post("/hyper_mega_fast_service")
def fast_service(request: Request, ):
aceept = request.headers.get('Accept')
value = great_fuction_to_get_version_from_header(aceept)
if value == '1.0.1':
"Do something"
if value == '1.0.2':
"Do something"
关于http - 如何设置快速 API 版本以允许 HTTP 可以在接受 header 中指定版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66390509/