Anonymous
422 Ошибка необрабатываемого объекта при отправке данных формы на серверную часть FastAPI с использованием ReactJs и Fet
Сообщение
Anonymous » 14 ноя 2024, 16:11
Я постоянно получаю сообщение об ошибке 422 Unprocessable Entity со следующими отсутствующими полями:
Код: Выделить всё
{"detail":[{"type":"missing","loc":["body","username"],"msg":"Field required","input":null},{"type":"missing","loc":["body","password"],"msg":"Field required","input":null}]}
Я перепробовал все возможное, но ошибка не устранена.
Это мой код интерфейса:
Код: Выделить всё
const Login = () => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const navigate = useNavigate();
const handleLogin = async (e) => {
e.preventDefault();
const formData = new URLSearchParams();
formData.append('username', email); // Assuming the backend expects 'username'
formData.append('password', password);
try {
const response = await fetch('http://localhost:8000/token', {
method: 'POST',
body: formData,
});
if (!response.ok) {
throw new Error('Login failed');
}
а это бэкэнд:
Код: Выделить всё
@fastapi_router.post("/token", response_model=Token)
async def login_for_access_token(
username: Annotated[str, Form()],
password: Annotated[str, Form()],
db: AsyncSession = Depends(database.get_db)
):
user = await auth.authenticate_user(db, username, password)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token_expires = timedelta(minutes=envs.access_token_expire_minutes)
access_token = auth.create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)
logger.info(f"Access Token: {access_token}")
return {"access_token": access_token, "token_type": "bearer"}
Будем благодарны за любую помощь.
Подробнее здесь:
https://stackoverflow.com/questions/786 ... nd-using-r
1731589886
Anonymous
Я постоянно получаю сообщение об ошибке 422 Unprocessable Entity со следующими отсутствующими полями: [code]{"detail":[{"type":"missing","loc":["body","username"],"msg":"Field required","input":null},{"type":"missing","loc":["body","password"],"msg":"Field required","input":null}]} [/code] Я перепробовал все возможное, но ошибка не устранена. Это мой код интерфейса: [code]const Login = () => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const navigate = useNavigate(); const handleLogin = async (e) => { e.preventDefault(); const formData = new URLSearchParams(); formData.append('username', email); // Assuming the backend expects 'username' formData.append('password', password); try { const response = await fetch('http://localhost:8000/token', { method: 'POST', body: formData, }); if (!response.ok) { throw new Error('Login failed'); } [/code] а это бэкэнд: [code]@fastapi_router.post("/token", response_model=Token) async def login_for_access_token( username: Annotated[str, Form()], password: Annotated[str, Form()], db: AsyncSession = Depends(database.get_db) ): user = await auth.authenticate_user(db, username, password) if not user: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Incorrect username or password", headers={"WWW-Authenticate": "Bearer"}, ) access_token_expires = timedelta(minutes=envs.access_token_expire_minutes) access_token = auth.create_access_token( data={"sub": user.username}, expires_delta=access_token_expires ) logger.info(f"Access Token: {access_token}") return {"access_token": access_token, "token_type": "bearer"} [/code] Будем благодарны за любую помощь. Подробнее здесь: [url]https://stackoverflow.com/questions/78686504/422-unprocessable-entity-error-when-sending-form-data-to-fastapi-backend-using-r[/url]