fastapi 重定向

fastapi 重定向

使用 starlette 的RedirectResponse

import logging

from fastapi import FastAPI
from starlette.responses import RedirectResponse
from starlette.testclient import TestClient

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

app = FastAPI()


@app.get("/app")
def read_main():
    return {<!-- -->"message": "Hello World from main app"}


subapi = FastAPI(openapi_prefix="/subapi")


@subapi.get("/sub")
async def read_sub():
    return {<!-- -->"message": "Hello World from sub API"}


@subapi.get("/redirect")
async def redirect():
    url = app.url_path_for("redirected")
    response = RedirectResponse(url=url)
    return response


@subapi.get("/redirected")
async def redirected():
    logger.debug("REDIRECTED")
    return {<!-- -->"message": "you've been redirected"}


app.mount("/subapi", subapi)


client = TestClient(app)


def test_redirect_subapi():
    url = app.url_path_for("redirect")
    response = client.get(url)
    assert response.json() == {<!-- -->"message": "you've been redirected"}
posted @ 2020-12-25 15:06  不要摸我的腰  阅读(2203)  评论(0编辑  收藏  举报