GET-запросы
Начнем разработку приложения с метода GET — это метод для чтения данных с сайта. Например, для доступа к указанной странице. Он говорит серверу, что клиент хочет прочитать указанный документ.
Метод мы объявляем с помощью декоратора @app.get. Как мы уже знаем из прошлого шага, первым параметром(path) мы передаем параметры пути. Также мы можем передавать ему код состояния ответа(status_code), теги, описания и другие параметры. Далее по курсу мы будем работать с этими параметрами и рассмотрим их подробно.
Продолжим работу над CRUD приложением. На данный момент мы создали две функции для получения записей из нашего приложения:
@app.get("/")
async def get_all_messages() -> dict:
pass
@app.get("/message/{message_id}")
async def get_message(message_id: str) -> str:
pass
Первая функция выводит все записи из нашей БД (словаря), вторая функция выводит содержимое записи с получаемым ID из параметра пути. Допишем функции следующим образом:
@app.get("/")
async def get_all_messages() -> dict:
return messages_db
@app.get("/message/{message_id}")
async def get_message(message_id: str) -> str:
return messages_db[message_id]
Запустим приложение через команду uvicorn crud:app --port 8000 --reload и проверим работу. Зайдем в документацию, и мы видим наши функции в виде HTTP методов запроса.
Выберем метод GET функции get_all_messages(), и нажмем кнопку "Try it out" и потом "Execute" чтобы отправить запрос.
Мы видим что функция get_all_messages(), возвращает все содержимое нашего словаря. Проверим работу функции get_message(), она ждет от нас ввода номера записи:
Введем message_id равное 0 и отправим запрос.
Мы получаем ответ с кодом 200 и содержимым нашей записи из словаря с ключом 0. Такой же результат мы можем получить и при переходе по адресу http://127.0.0.1:8000/message/0, мы получим содержимое записи с ключом равным 0.
Также мы можем выполнить запрос при переходе на главную страницу нашего приложения.
Мы видим код ответа 200, и метод запроса GET. В следующем шаге мы поговорим о методе POST и реализуем возможность добавлять записи.