Что такое API
Что такое API
API (Application Programming Interface) — интерфейс, через который одна программа общается с другой.
В вебе API — это HTTP-эндпоинт, который принимает запросы и возвращает данные (обычно JSON).
API vs сайт
| Сайт | API | |
|---|---|---|
| Возвращает | HTML | JSON |
| Клиент | Браузер | Любой |
| Состояние | Сессии | Stateless |
| Формат | Страница | Данные |
Сайт — готовая страница. API — данные, а клиент сам решает, как их показать.
Кто клиенты
- SPA — React, Vue, Angular.
- Мобильные — iOS, Android, React Native, Flutter.
- Другие серверы — микросервисы, интеграции.
- Скрипты — CLI, cron.
- Партнёры — внешние компании.
REST
REST (Representational State Transfer) — стиль проектирования API.
Принципы:
- Ресурсы — сущности (posts, users).
- HTTP-методы — действия.
- Stateless — нет состояния между запросами.
- Единый интерфейс — стандартные URL.
- Кеширование — заголовки.
Соглашение:
| Метод | URL | Действие |
|---|---|---|
| GET | /api/posts | Список |
| POST | /api/posts | Создать |
| GET | /api/posts/5 | Один |
| PUT/PATCH | /api/posts/5 | Обновить |
| DELETE | /api/posts/5 | Удалить |
Ресурс — существительное во множественном числе. Действие — HTTP-метод.
JSON
JSON — стандартный формат обмена.
{
"id": 1,
"title": "Hello",
"tags": ["laravel", "php"],
"author": { "id": 5, "name": "Иван" }
}
Laravel сам преобразует модели и массивы в JSON.
Stateless
API не хранит состояние. Каждый запрос содержит всё нужное: токен, параметры, тело.
Не используются сессии. Вместо — токены в заголовке Authorization.
Плюс: легко масштабировать — любой сервер обработает.
Статусы HTTP
| Код | Значение | Когда |
|---|---|---|
| 200 | OK | Успешный GET/PUT |
| 201 | Created | После POST |
| 204 | No Content | После DELETE |
| 400 | Bad Request | Некорректный запрос |
| 401 | Unauthorized | Не авторизован |
| 403 | Forbidden | Нет прав |
| 404 | Not Found | Ресурс не найден |
| 422 | Unprocessable Entity | Ошибки валидации |
| 429 | Too Many Requests | Превышен rate limit |
| 500 | Internal Server Error | Ошибка сервера |
Файлы роутов
routes/api.php — API-роуты. Автоматически получают:
- Префикс
/api. - Middleware
api— throttle, без CSRF и сессий.
use Illuminate\Support\Facades\Route;
Route::get('/posts', function () {
return Post::all();
});
URL — /api/posts.
Пример API
// GET /api/posts
Route::get('/posts', function () {
return Post::with('user')->paginate(15);
});
// GET /api/posts/1
Route::get('/posts/{post}', function (Post $post) {
return $post;
});
// POST /api/posts
Route::post('/posts', function (Request $request) {
$post = Post::create($request->validated());
return response()->json($post, 201);
});
Тот же синтаксис, что у сайта. Разница — в ответах (JSON vs HTML).
Версионирование — с самого начала
Даже если одна версия — сразу /api/v1/.... Добавить позже — сложнее.
Route::prefix('v1')->group(function () {
Route::apiResource('posts', PostController::class);
});
Что дальше
- Настройка API в Laravel
- API-ресурсы
- Resource-контроллеры для API
- Валидация в API
- Пагинация в API
- Фильтрация и сортировка
- Аутентификация Sanctum
- Обработка ошибок API
- Версионирование
- Документация
- Rate limiting и CORS
- Практика: полный API
Практика
Ответь на вопросы:
- Чем API отличается от сайта?
- Что такое REST?
- Какой код для успешного создания?
- Для чего нужен префикс
/api?
Открой в браузере:
https://api.github.com/users/torvalds
https://jsonplaceholder.typicode.com/posts/1
Что видишь: JSON. Это API.
Итог
- API — интерфейс для программ.
- REST — стиль с ресурсами и HTTP-методами.
- JSON — стандартный формат.
- Stateless — нет сессий.
- Статусы — 200, 201, 401, 403, 404, 422, 500.
routes/api.php— префикс/api.- Версионирование — сразу с
/v1.
Дальше — настройка API в Laravel.