← Назад к вопросам

Какие HTTP методы используются в REST API?

1.0 Junior🔥 211 комментариев
#API тестирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

HTTP-методы в REST API

REST (Representational State Transfer) архитектура строится на стандартных HTTP-методах для выполнения операций над ресурсами. Это отличается от классического подхода с именованными URL для каждого действия.

Основные REST методы

GET — чтение данных

  • Безопасная операция
  • Не изменяет состояние сервера
  • Кэшируется
  • Идемпотентна
  • Пример: GET /api/v1/users/123

POST — создание новых ресурсов

  • Создаёт новый ресурс
  • Сервер генерирует ID
  • Возвращает 201 Created
  • Не идемпотентна
  • Пример: POST /api/v1/users с телом {name, email}

PUT — полное обновление ресурса

  • Заменяет весь ресурс
  • Идемпотентна
  • Требует полное представление ресурса
  • Пример: PUT /api/v1/users/123 с полными данными

DELETE — удаление ресурса

  • Удаляет ресурс
  • Идемпотентна
  • Возвращает 204 No Content
  • Пример: DELETE /api/v1/users/123

PATCH — частичное обновление

  • Обновляет отдельные поля
  • Экономит трафик
  • Может быть идемпотентна
  • Пример: PATCH /api/v1/users/123 с {name}

REST соглашения

Правильные URL структуры:

  • Ресурсы во множественном числе: /users, /posts, /comments
  • Вложенные ресурсы: /users/123/posts, /posts/456/comments
  • Коллекции по умолчанию: /users (всё), /users?status=active (фильтр)
  • Операции через стандартные методы, не через глаголы в URL

Неправильные подходы:

  • Глаголы в URL: /users/create, /posts/delete/123, /comments/update
  • Смешивание методов и операций
  • Использование POST для всех операций изменения

Коды ответов REST API

2xx — успех:

  • 200 OK — успешный GET, PUT, PATCH
  • 201 Created — успешный POST
  • 204 No Content — успешный DELETE

4xx — ошибки клиента:

  • 400 Bad Request — невалидные данные
  • 401 Unauthorized — требуется аутентификация
  • 403 Forbidden — нет прав доступа
  • 404 Not Found — ресурс не найден
  • 409 Conflict — конфликт (например, дублирование)

5xx — ошибки сервера:

  • 500 Internal Server Error
  • 503 Service Unavailable

Практический пример REST API структуры

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    name: str
    email: str

# GET — получить всех пользователей
@app.get("/api/v1/users")
async def list_users():
    return [{"id": 1, "name": "John", "email": "john@example.com"}]

# GET — получить одного пользователя
@app.get("/api/v1/users/{user_id}")
async def get_user(user_id: int):
    return {"id": user_id, "name": "John", "email": "john@example.com"}

# POST — создать пользователя
@app.post("/api/v1/users", status_code=201)
async def create_user(user: User):
    return {"id": 1, **user.dict()}

# PUT — обновить пользователя полностью
@app.put("/api/v1/users/{user_id}")
async def update_user(user_id: int, user: User):
    return {"id": user_id, **user.dict()}

# PATCH — обновить отдельные поля
@app.patch("/api/v1/users/{user_id}")
async def partial_update(user_id: int, data: dict):
    return {"id": user_id, "name": data.get("name")}

# DELETE — удалить пользователя
@app.delete("/api/v1/users/{user_id}", status_code=204)
async def delete_user(user_id: int):
    return None

Тестирование REST API

При автоматизации важно проверять:

  • Все CRUD операции работают корректно
  • Правильные коды ответов
  • Данные в ответах соответствуют отправленным
  • Идемпотентность идемпотентных операций
  • Обработка ошибок (валидация, авторизация, конфликты)
  • Граничные случаи (пустые коллекции, несуществующие ID)

Это основа компетентного тестирования современных веб-приложений.

Какие HTTP методы используются в REST API? | PrepBro