← Назад к вопросам
Какие 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)
Это основа компетентного тестирования современных веб-приложений.