Ошибка: "msg": "Input Should be a valid dictionary or object to extract fields from input" при fetch запросе POST в FastAPI
Пишу аналог для google forms. Администратор создает новые опросники. Заранее не известно сколько вопросов будет в опроснике, поэтому через js создаю новые теги:
<div class="create_new">
<div class="opros_settings">
<div class="settings_header">
<p>Настройки Опросника</p>
</div>
<div class="settings">
<input type="submit" value="Создать Новое Поле Ввода" id="newInput">
<input type="submit" value="Создать Новое Поле Выбора Одного" id="newOneOfFew">
<input type="submit" value="Создать Новое Поле Выбора Нескольких">
</div>
</div>
<div id="oprosnik">
<form method="POST" action="/handler_new_opros" id="oprosnik_form">
<input type="text" placeholder="Название Опросника" name="name" id="opros_name">
<input type="submit" value="Создать Опросник" id="newSendButton">
</form>
</div>
</div>
Вот сам JS код создания
var whereToAdd = document.getElementById('oprosnik_form');
var buttonNewInput = document.getElementById('newInput');
var inputCount = 0;
buttonNewInput.addEventListener('click', function(){
var newInput = document.createElement('input');
inputCount++;
newInput.type = 'text';
newInput.id = 'Input';
newInput.classList.add('Input');
newInput.placeholder = 'Введите сюда текст вопроса';
newInput.name = 'input_value_' + inputCount;
whereToAdd.insertBefore(newInput, createOprosButton);
});
Вот маршрут на который я пишу Fetch запрос:
class Oprosnik(BaseModel):
opros_name: str
input_count: int
input_value: str
@app.post('/handler_new_opros', response_class=JSONResponse)
async def handler_new_opros(oprosnik: Oprosnik):
try:
create_new_oprosnik(dbcon, dbcur, oprosnik.opros_name, oprosnik.input_count, oprosnik.input_value)
return {'msg': 'good'}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Вот fetch запрос на чисто js:
var createOprosButton = document.getElementById('newSendButton');
createOprosButton.addEventListener('click', function(){
var opros_name = document.getElementById('opros_name').value;
var inputs = document.querySelectorAll('.Input');
var values = Array.from(inputs).map(input => input.value).join(',');
var data = {
"opros_name": opros_name,
"input_count": inputs.length,
"input_value": values
}
var json_data = JSON.stringify(data);
fetch('https://192.168.43.47:8000/handler_new_opros', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: json_data
})
.then(response => response.json())
.then(data => {
// alert(data);
})
.catch(error => {
// alert('Ошибка:', error);
});
});
Ошибка, которая появляется когда уже нажимаю кнопку отправить:
Input should be a valid dictionary or object to extract fields from