FastAPI определение имени субдомена и передача в функцию

Рейтинг: 0Ответов: 1Опубликовано: 21.07.2023

Делаю онлайн меню для кафе. у каждого кафе свой субдомен cafe1.menu.com, cafe2.menu.com, cafe2.menu.com.

Как в роуте определить имя субдомена и передать его в функцию?

Ответы

▲ 0

Нужно получать данные запроса напрямую, из них можно вытащить URL и имя хоста:

import uvicorn
from fastapi import FastAPI, Request

app = FastAPI()


@app.get("/")
def read_root(request: Request):
    return request.url.hostname


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=5000)

При переходе на http://0.0.0.0:5000 вернет "0.0.0.0". Если у вас URL фактически будет cafe1.menu.com/..., то и имя хоста будет "cafe1.menu.com".

Соответственно, вам нужно будет из имени хоста вытащить первую часть (хоть через split или partition, хоть через регулярное выражение), и передать ее в функцию.