Что такое REST API?

«Что такое REST API?» — вопрос из категории Сети, который задают на 31% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

REST (Representational State Transfer) — это архитектурный стиль для построения распределенных систем, основанный на стандартах и принципах HTTP. REST API — это интерфейс, который следует этим принципам.

Ключевые принципы, которые я учитываю при проектировании:

  1. Единообразие интерфейса (Uniform Interface): Использование стандартных HTTP-методов (GET, POST, PUT, DELETE, PATCH) для операций с ресурсами, которые идентифицируются URI (например, /api/users/123).
  2. Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для его обработки. Сервер не хранит состояние сессии между запросами.
  3. Кэшируемость (Cacheable): Ответы должны явно указывать, можно ли их кэшировать и как долго, чтобы повысить производительность.
  4. Слоистая система (Layered System): Клиент не знает, общается ли он напрямую с сервером или через промежуточные узлы (балансировщики, прокси, кэши).

Пример реализации конечной точки на PHP (с использованием фреймворка Laravel):

// Маршрут в routes/api.php
Route::apiResource('users', UserController::class);

// Контроллер
class UserController extends Controller
{
    public function index() // GET /api/users
    {
        return User::paginate(20); // Автоматически возвращает JSON
    }

    public function store(Request $request) // POST /api/users
    {
        $validated = $request->validate([
            'name' => 'required|string',
            'email' => 'required|email|unique:users'
        ]);

        $user = User::create($validated);
        return response()->json($user, 201); // Статус 201 Created
    }

    public function show(User $user) // GET /api/users/{user}
    {
        return $user;
    }
}

Почему REST популярен: Он использует уже существующие, хорошо понятные стандарты веба (HTTP/JSON), что делает API предсказуемым, простым для потребления и масштабируемым.

Видео-ответы