Разобраться в запросе с сайта в FastAPI

Помогите пожалуйста разобраться в ситуации. Пытаюсь освоить FastAPI только учусь, столкнулся с проблемой. Сделал тестовый сайт html, где пользователь вводит логин и пароль, затем делает запрос к FastAPI тот проводит аутентификацию пользователя и выдаёт данные. Столкнулся с тем, что не могу отправить логин-пароль пользователя с сайта, выдаёт ошибку: 405 Method Not Allowed. Обработка запроса идёт например вот через эти функции:

class UserInfo(BaseModel):
    salary: int
    date: str

class UserLogin(BaseModel):
    login: str
    password: str

def validate_auth_user(person: UserLogin):
    unauthed_exc = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="invalid username or password",
    )
    if not (user := users_db.get(person.username)):
        raise unauthed_exc

    if not auth_utils.validate_password(
        password=person.password,
        hashed_password=user.password,
    ):
        raise unauthed_exc

    if not user.active:
        raise HTTPException(
            status_code=status.HTTP_403_FORBIDDEN,
            detail="user inactive",
        )

    return user

@router.post("/login/", response_model=UserInfo)
def auth_user_issue_jwt(
    user: UserSchema = Depends(validate_auth_user),
):
    return UserInfo(salary=user.salary, date=user.date)

Сам код сайта с скриптом таков:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link href="./style.css" rel="stylesheet">
    <title>Тестовый сайт для зарплаты</title>
</head>
<body>
    <div class="parent">
        <div class="block">
            <h1>To get data</h1>
            <form>
                <input type="text" id="login" value="" placeholder="Login"><br>
                <input type="password" id="password" value=""
                    placeholder="Password"><br>
            </form>
            <button onclick="send()" class="button">Sign in</button><br>
        </div>
    </div>

    <script>
        async function send(){

            // получаем введеное в поле 
            const login = document.getElementById("login").value;
            const password = document.getElementById("password").value;

            // отправляем запрос
            const response = await fetch("/login/", {
                    method: "POST",
                    headers: { "Accept": "application/json", "Content-Type": "application/json" },
                    body: JSON.stringify({
                        login: login,
                        password: password
                    })
                });
                if (response.ok) {
                    const data = await response.json();
                    document.getElementById("message").textContent = data.message;
                }
                else
                    console.log(response);
        }
    </script>
</body>
</html>

Старался делать по тренировочным разным материалам которые нашёл по теме, но теперь в тупике. Говорят, что напрямую FastAPI вроде как не предназначен для работы с фронтом, но всё же хотелось бы решить эту проблему...

Поправка: Если я делаю вход через http://127.0.0.1:8000/docs и ввожу там данные пользователя, то метод работает, он получает и обрабатывает логин и пароль, но вот с сайта не принимает... Я вроде сделал отдельные модели, указал их в функции, всё как в тренировочных уроках. Не понимаю. Во вкладке Network в разделе Request Payload есть json словарь с логином и паролем который на сайте ввожу, всё как надо: {username: "fdsa", password: "edcvfr"}, заголовок: http://127.0.0.1:8000/login/ почему он его не принимает? Буду благодарен за помощь....


Ответы (0 шт):