Python: ошибка FastAPI 422 с пост-запросом - PullRequest
1 голос
/ 27 января 2020

Я создаю простой API для тестирования базы данных. Когда я использую запрос get, все работает нормально, но если я перехожу к публикации, я получаю сообщение об ошибке «unprocessable entity»:

Вот код FastAPI:

from fastapi import FastAPI

app = FastAPI()

@app.post("/")
def main(user):
    return user

Затем мой запрос использует javascript

let axios = require('axios')

data = { 
    user: 'smith' 
}

axios.post('http://localhost:8000', data)
    .then(response => (console.log(response.url)))

И используя Python

import requests

url = 'http://127.0.0.1:8000'
data = {'user': 'Smith'}

response = requests.post(url, json=data)
print(response.text)

Я также пытаюсь проанализировать как json, завершив использование utf-8, и изменить заголовки. У меня ничего не получалось.

1 Ответ

2 голосов
/ 28 января 2020

Прямо из документации :

Параметры функции будут распознаваться следующим образом:

  • Если параметр также объявлен в путь , он будет использоваться в качестве параметра пути.
  • Если параметр имеет тип единственного числа (например, int, float, str, bool, et c ) он будет интерпретирован как параметр запроса .
  • Если параметр объявлен как тип Pydanti c модель , он будет интерпретирован как запрос body . "

Таким образом, чтобы создать конечную точку POST, которая получает тело с полем пользователя, вы должны сделать что-то вроде:

from fastapi import FastAPI
from pydantic import BaseModel


app = FastAPI()


class Data(BaseModel):
    user: str


@app.post("/")
def main(data: Data):
    return data
...