- Опубликовано: 26 мар 2025
- 92
API маршруты в Laravel 12
В Laravel 12 маршруты делятся на два основных типа: web (обычные маршруты) и API. Их ключевые отличия связаны с назначением и конфигурацией:
📌 1. Отличия простых (web) маршрутов от API маршрутов:
📌 2. Примеры определения маршрутов
Обычный (web) маршрут (файл: routes/web.php
):
Route::get('/home', function () {
return view('home');
});
API-маршрут (файл: routes/api.php
):
Route::get('/posts', function () {
return response()->json(['message' => 'Список постов']);
});
Этот маршрут по умолчанию доступен через URL:
GET /api/posts
📌 3. Как реализовать маршрут для API в Laravel 12 (пошагово):
Шаг 1: Создайте маршрут в файле routes/api.php
use App\Http\Controllers\Api\PostController;
Route::get('/posts', [PostController::class, 'index']);
Этот маршрут автоматически получит префикс /api
, то есть будет доступен по адресу:
GET /api/posts
Шаг 2: Создайте API-контроллер (опционально):
sail artisan make:controller Api/PostController --api
Это создаст контроллер с заготовками RESTful методов: index
, store
, show
, update
, destroy
.
Шаг 3: Заполните метод контроллера:
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return response()->json($posts);
}
}
📌 4. Полезные советы при работе с API в Laravel:
- Для возврата корректных JSON-ответов используйте метод
response()->json()
. - Для обработки ошибок и исключений настройте API Exception Handler (
app/Exceptions/Handler.php
) с кастомными ответами. - Чтобы защитить маршруты API, используйте middleware
auth:sanctum
(для авторизации с Sanctum-токенами):
Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', fn(Request $request) => $request->user());
});
📌 5. Регистрация маршрутов API (где это происходит):
Файл app/Providers/RouteServiceProvider.php
содержит регистрацию маршрутов:
Route::middleware('api')
->prefix('api')
->group(base_path('routes/api.php'));
Т.е. маршруты из файла routes/api.php
:
- Автоматически получают middleware
api
. - Получают префикс
/api
.
Таким образом, в Laravel 12:
-
web маршруты используют middleware
web
, сессии и предназначены для веб-интерфейсов. -
api маршруты используют middleware
api
, не используют сессии, предназначены для RESTful API, возвращают JSON.
Используя эти рекомендации, вы легко сможете организовать API в своем приложении Laravel.
Была статья полезной: