Управление базовым путем Python FastAPI

#python #fastapi

#python #fastapi

Вопрос:

Когда я использую FastAPI, как я могу определить базовый путь для веб-службы?

Другими словами, существуют ли аргументы для объекта FastAPI, которые могут устанавливать конечную точку и любые другие, которые я определяю, на другой корневой путь?

Например, если бы у меня был код с root приведенным ниже ложным аргументом, он бы прикрепил мою /my_path конечную точку к /my_server_path/my_path ?

 from fastapi import FastAPI, Request

app = FastAPI(debug = True, root = 'my_server_path') 

@app.get("/my_path")
def service( request : Request ):
    return { "message" : "my_path" }
 

Комментарии:

1. Я могу получить что-то похожее на работу, обернув аргумент path в функцию, которая добавляет базовый URI, например @app.get( make_path("/my_path") , где make_path просто добавляет строку, например def make_path( x : str ) -> str: return "/my_server_path" x

Ответ №1:

Вы можете использовать APIRouter и добавить его в приложение после добавления путей:

 from fastapi import APIRouter, FastAPI

app = FastAPI()

prefix_router = APIRouter(prefix="my_server_path")

# Add the paths to the router instead
@prefix_router.get("/my_path")
def service( request : Request ):
    return { "message" : "my_path" }

# Now add the router to the app
app.include_router(prefix_router)
 

Сначала добавляя маршрутизатор, а затем добавляя пути, теперь он работает. Кажется, что пути не определяются динамически.

Ответ №2:

Я думаю, вам нужна опция префикса.

Добавьте это после создания app :

app.include_router(prefix="/my_server_path")

Комментарии:

1. Это не работает с моей последней версией FastAPI.

2. Какую версию вы используете?