Python - Как принять аргумент в функции с именем 'from'
Использую FastAPI. Функция - обработчик в качестве аргументов принимает имена Query параметров из запроса. Вот сама функция обработчик:
@api.get('/visited_links/')
def upload_links(from: str):
from_time = from
print(from_time)
Такой подход понятно, что работать не будет. Пробовал вот так:
@api.get('/visited_links/')
def upload_links(*args, **kwargs):
from_time = kwargs.get('from')
print(from_time)
Но на такой подход ругается FastAPI и не хочет передавать параметры в такую функцию. Обращаться к API по другому не вариант. Переезжать на DRF ради такой мелочи нет желания. Спасибо!
Ответы (2 шт):
Можно в функцию добавить параметр Request, что описывает запрос, а из него получить параметры:
from fastapi import FastAPI, Request
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int, request: Request):
query_params = request.query_params
print(query_params['from'])
# 9999
return {"item_id": item_id, "q": query_params}
При открытии http://127.0.0.1:8000/items/5?q=somequery&from=9999 вернуло:
{"item_id":5,"q":{"q":"somequery","from":"9999"}}
PS.
Вариант @gil9red работает, все отлично. Однако хотелось бы не терять в авто-документации. Решил вопрос с помощью Query и alias, если вдруг кому-то пригодится.
@api.get('/visited_links/')
def get_links(to: str, q: str = Query(None, alias="from")):
try:
filtered_domains = store.filter_domains_by_time(time_from=q, time_to=to)
return Response(details={'domains': filtered_domains}).json()
except Exception as e:
return Response(status=str(e)).json()