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

Что такое REST API?

1.3 Junior🔥 211 комментариев
#API и веб-протоколы

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

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

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

REST API — Representational State Transfer

REST API — это архитектурный стиль для построения веб-сервисов, который использует стандартные HTTP методы и принципы для взаимодействия между клиентом и сервером. REST — один из самых популярных подходов к разработке веб-приложений благодаря своей простоте и масштабируемости.

Основные принципы REST

1. Клиент-сервер архитектура — четкое разделение ответственности между клиентом (приложение, которое делает запросы) и сервером (приложение, обрабатывающее запросы).

2. Statelessness (Отсутствие состояния) — каждый запрос содержит всю необходимую информацию для его обработки. Сервер не хранит контекст сессии клиента между запросами. Это улучшает масштабируемость.

3. Ресурсы как ключевая концепция — всё в REST представляется как ресурсы (пользователи, посты, комментарии). Каждый ресурс имеет уникальный идентификатор (обычно URI).

4. Использование стандартных HTTP методов:

  • GET — получение ресурса
  • POST — создание нового ресурса
  • PUT — обновление существующего ресурса
  • DELETE — удаление ресурса
  • PATCH — частичное обновление ресурса

5. Представление ресурсов — ресурсы могут быть представлены в разных форматах (JSON, XML). Обычно используется JSON.

6. Кэширование — ответы могут быть закэшированы для улучшения производительности.

Примеры REST endpoints

// Получить список всех пользователей
GET /api/v1/users

// Получить конкретного пользователя
GET /api/v1/users/123

// Создать нового пользователя
POST /api/v1/users
Body: {"name": "John", "email": "john@example.com"}

// Обновить пользователя
PUT /api/v1/users/123
Body: {"name": "Jane", "email": "jane@example.com"}

// Удалить пользователя
DELETE /api/v1/users/123

// Получить комментарии конкретного пользователя
GET /api/v1/users/123/comments

Реализация REST API на PHP (пример с Laravel)

Route::prefix('api/v1')->group(function () {
    Route::resource('users', UserController::class);
});

class UserController extends Controller {
    // Получить список пользователей
    public function index() {
        return response()->json(User::all());
    }
    
    // Получить одного пользователя
    public function show($id) {
        return response()->json(User::findOrFail($id));
    }
    
    // Создать пользователя
    public function store(Request $request) {
        $user = User::create($request->validated());
        return response()->json($user, 201);
    }
    
    // Обновить пользователя
    public function update(Request $request, $id) {
        $user = User::findOrFail($id);
        $user->update($request->validated());
        return response()->json($user);
    }
    
    // Удалить пользователя
    public function destroy($id) {
        User::findOrFail($id)->delete();
        return response()->json(null, 204);
    }
}

Правильные HTTP статус-коды

  • 200 OK — успешный запрос
  • 201 Created — ресурс успешно создан
  • 204 No Content — успешно, но нет контента для возврата
  • 400 Bad Request — ошибка в запросе клиента
  • 401 Unauthorized — требуется аутентификация
  • 403 Forbidden — нет доступа к ресурсу
  • 404 Not Found — ресурс не найден
  • 500 Internal Server Error — ошибка сервера

Преимущества REST API

  • Простота — использует стандартные HTTP методы
  • Масштабируемость — stateless архитектура позволяет легко добавлять серверы
  • Кэшируемость — можно использовать HTTP кэширование
  • Универсальность — работает с любыми клиентами (веб, мобильные приложения)
  • Стандартизация — REST это общепринятый стандарт

Лучшие практики

  • Используй существительные для ресурсов, не глаголы
  • Версионируй API (/api/v1, /api/v2)
  • Используй правильные HTTP статус-коды
  • Документируй API (Swagger/OpenAPI)
  • Реализуй аутентификацию и авторизацию
  • Валидируй входные данные
  • Используй paging для больших наборов данных

Вывод: REST API — это мощный и гибкий стиль для построения веб-сервисов, который остается одним из самых популярных выборов в веб-разработке.

Что такое REST API? | PrepBro