Error 405 on POST method FastAPI

Есть небольшой учебный проект - сайт на FastAPI для укорачивания ссылок, запускается на uvicorn. В нём есть функция, она принимает длинный url, который отправляет пользователь, и возвращает короткую версию.

@app.post("/")
async def get_url_web(long_url: str) -> Dict[str, str]:
    url = await shorten(URL(long=long_url))
    return {"short_url": url.short}

Когда посылаю запрос, летит ошибка 405:

[2024-04-05 20:41:12,630] #INFO     h11_impl.py: 477 - uvicorn.access - 127.0.0.1:52144 - "POST /?long_url=https%3A%2F%2Fexample.com HTTP/1.1" 405

Как исправить? Помогите плиз


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

Автор решения: NTA

405 Method Not Allowed — указанный клиентом метод нельзя применить к текущему ресурсу

У вас стоит метод post, но вероятно вы открываете ссылку через браузер, который отправляет только get запросы. Для исправления либо смените метод в коде с post на get, либо отправляйте запрос через curl, или напишите скрипт на python который отправляет post запросы:

from requests import post

print(post('http://127.0.0.1:8000/?long_url=https%3A%2F%2Fexample.com').json())
#{'short_url': '###'}
→ Ссылка