3.1 Проектирование и реализация REST API (GET, POST, PUT, DELETE)
9 из 9 шагов пройдено
3 из 3 баллов  получено

DELETE-запросы

Запрос DELETE - это метод, используемый в протоколе передачи гипертекста (HTTP) для запроса на удаление или удаление ресурса на сервере. Когда клиент отправляет запрос DELETE на сервер, он просит удалить указанный ресурс, такой как файл или запись базы данных.

Метод является идемпотентным, что означает, что выполнение нескольких одинаковых запросов должно иметь тот же эффект, что и выполнение одного запроса. Однако важно отметить, что фактическое удаление ресурса зависит от реализации и политики сервера. После получения запроса DELETE, сервер обрабатывает его и удаляет указанный ресурс, если он существует, возвращая код состояния, указывающий на успех или неудачу операции.

В скелете нашего API нас уже есть функции, которые принимают DELETE запросы. Функция delete_message принимает message_id из параметра пути. А функция kill_message_all ничего не принимает.

Оба метода мы объявили с помощью декоратора @app.delete. И напишем код удаления записей:

@app.delete("/message/{message_id}")
async def delete_message(message_id: str) -> str:
    messages_db.pop(message_id)
    return f"Message ID={message_id} deleted!"

@app.delete("/")
async def kill_message_all() -> str:
    messages_db.clear()
    return "All messages deleted!"

Параметр status_code мы заполнять не будем, так как при успешном выполнении метод  Delete возвращает код ответа 200.

Запустим приложение через команду  uvicorn crud:app --port 8000 --reload и проверим работу. Зайдем в документацию, добавим несколько записей. В качестве примера я добавил еще 2 записи:

Теперь попробуем отправить DELETE запрос через функцию delete_message:

Введя параметр message_id и отправив запрос, мы увидим код ответа 200, и сообщение об успешном удаление записи с id=0 из нашей БД(словаря)

Теперь мы можем сделать GET запрос на получение всех записей. 

Как мы видим, запись действительно была удалена. Попробуем отправить DELETE запрос, чтобы удалить все записи, используя функцию kill_message_all.

Мы видим код ответа 200, и сообщение об успешном удалении всех записей. Теперь мы можем сделать GET запрос на получение всех записей:

В результате которого мы видим что наша БД(словарь) пустая.

На этом изучение основ CRUD проекта на FastAPI мы не заканчиваем. Исходный код этого раздела вы можете посмотреть по этой ссылке на GitHub.

Далее мы продолжим изучать FastAPI, улучшая наш CRUD проект, добавляя модели Pydantic и научимся обрабатывать ошибки.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Нет обсуждений. Начните первое.