Каково назначение HTTP-метода DELETE в REST API?

Ответ

HTTP-метод DELETE используется в REST API для удаления конкретного ресурса, идентифицируемого по URI.

Ключевые характеристики:

  1. Идемпотентность: DELETE является идемпотентным методом. Это означает, что повторное выполнение одного и того же запроса DELETE приведет к тому же состоянию системы. Первый запрос удалит ресурс, а последующие просто подтвердят, что ресурс уже удален (обычно возвращая 404 Not Found).

  2. Специфичность: Запрос всегда направлен на конкретный ресурс (например, /api/users/123), в отличие от POST, который может создавать ресурс в коллекции (/api/users).

Ответы сервера:

  • 200 OK: Ресурс успешно удален, и в теле ответа может содержаться сообщение об этом.
  • 204 No Content: Ресурс успешно удален, тело ответа пустое. Это частый и предпочтительный ответ для DELETE.
  • 404 Not Found: Ресурс, который пытались удалить, не найден.

Пример на Flask:

from flask import Flask, jsonify

app = Flask(__name__)

# Имитация базы данных
users = {1: {"name": "Alice"}, 2: {"name": "Bob"}}

@app.route('/api/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    if user_id in users:
        del users[user_id]
        # 204 No Content - лучший выбор, так как клиенту не нужна доп. информация
        return '', 204
    else:
        # 404 Not Found, если пользователь не существует
        return jsonify({"error": "User not found"}), 404