Как передать список в запрос к fastapi?
Как передать массив в функцию? Строку разобрался как передавать, а массив не получается
from fastapi import FastAPI
app = FastAPI()
@app.post('/api/test/')
def get_test(queries: list):
return queries
Получаю ошибку
в логах
INFO: 127.0.0.1:55807 - "POST /api/test/ HTTP/1.1" 307 Temporary Redirect
INFO: 127.0.0.1:55807 - "POST /api/test HTTP/1.1" 422 Unprocessable Entity
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Через запрос GET (по мотивам примера из документации Query parameter list / multiple values):
from fastapi import FastAPI, Query
app = FastAPI()
@app.get('/api/test/')
def get_test(queries: list = Query()):
return queries
Запрос:
curl -X GET "http://localhost:8000/api/test/?queries=1&queries=2&queries=3"
Ответ:
["1","2","3"]
На мой взгляд, для передачи на сервер чего-то более сложного чем одиночные строки или числа (в принципе, когда семантически (по смыслу) нам нужно что-то передать, а не получить (get)) лучше использовать POST или PUT запросы, тогда и данные можно будет передать в теле запроса в виде JSON.
from fastapi import FastAPI
app = FastAPI()
@app.post('/api/test/')
def get_test(queries: list):
return queries
Запрос:
curl -X POST "http://localhost:8000/api/test/" -H "Content-Type: application/json" -d "[1,2,3]"
Ответ:
[1,2,3]
