Атрибут base_url
Атрибут base_url применяется к объекту запроса
Request и возвращает базовую часть URL,
включающую схему, хост и порт. Значение представляет
собой объект URL из библиотеки Starlette.
Атрибут доступен внутри обработчиков маршрутов
через параметр request.
Синтаксис
request.base_url
Пример
Давайте выведем базовый URL запроса в обработчике корневого маршрута:
from fastapi import FastAPI, Request
app = FastAPI()
@app.get('/')
def index(request: Request):
return {'base_url': str(request.base_url)}
Результат выполнения кода для адреса http://127.0.0.1:8000/:
{"base_url": "http://127.0.0.1:8000/"}
Пример
Давайте сравним base_url и url для одного и того же запроса:
from fastapi import FastAPI, Request
app = FastAPI()
@app.get('/user/{name}')
def user(request: Request, name: str):
return {
'base_url': str(request.base_url),
'url': str(request.url),
'name': name
}
Результат выполнения кода для адреса http://127.0.0.1:8000/user/abcde?active=true:
{
"base_url": "http://127.0.0.1:8000/",
"url": "http://127.0.0.1:8000/user/abcde?active=true",
"name": "abcde"
}
Пример
Давайте используем base_url для построения абсолютной ссылки на ресурс:
<+python+>
from fastapi import FastAPI, Request
app = FastAPI()
@app.get('/article/{slug}')
def article(request: Request, slug: str):
link = str(request.base_url) + 'article/' + slug
return {'link': link}
<-python+>
Результат выполнения кода для адреса http://127.0.0.1:8000/article/hello:
{"link": "http://127.0.0.1:8000/article/hello"}