Как опубликовать данные JSON из интерфейса JavaScript в серверную часть FastAPI?Python

Программы на Python
Ответить
Anonymous
 Как опубликовать данные JSON из интерфейса JavaScript в серверную часть FastAPI?

Сообщение Anonymous »

Я пытаюсь передать значение с именем «ethAddress» из формы ввода на клиенте в FastAPI, чтобы можно было использовать его в функции для создания диаграммы matplotlib.
Я я использую выборку для POST введенного текста в файле Charts.tsx:
fetch("http://localhost:8000/ethAddress", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(ethAddress),
}).then(fetchEthAddresses);

Затем мой файл api.py настроен следующим образом:
#imports
app = FastAPI()

@app.get("/ethAddress")
async def get_images(background_tasks: BackgroundTasks, ethAddress: str):

image = EthBalanceTracker.get_transactions(ethAddress)
img_buf = image
background_tasks.add_task(img_buf.close)
headers = {'Content-Disposition': 'inline; filename="out.png"'}
return Response(img_buf.getvalue(), headers=headers, media_type='image/png')

@app.post("/ethAddress")
async def add_ethAddress(ethAddress: str):
return ethAddress

Насколько я понимаю, я передаю «ethAddress» в теле запроса от клиента на серверную часть с помощью запроса fetch POST, к которому у меня затем есть доступ к значению, опубликованному с помощью @app.post в FastAPI. Затем я возвращаю это значение в виде строки. Затем я использую его в маршруте GET для создания диаграммы.
Я получаю следующую ошибку:
INFO: 127.0.0.1:59821 - "POST /ethAddress HTTP/1.1" 422 Unprocessable Entity
INFO: 127.0.0.1:59821 - "GET /ethAddress HTTP/1.1" 422 Unprocessable Entity

Я также пробовал переключить метод выборки на клиенте на GET вместо POST. Но получите следующую ошибку:
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.


Подробнее здесь: https://stackoverflow.com/questions/737 ... pi-backend
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»