aiblog/routes/api.php
2024-11-17 11:30:01 +08:00

77 lines
2.5 KiB
PHP

<?php
use App\Http\Controllers\Api\AuthController;
use App\Http\Controllers\Api\CategoryController;
use App\Http\Controllers\Api\CommentController;
use App\Http\Controllers\Api\PostController;
use App\Http\Controllers\Api\UserController;
use App\Http\Controllers\Api\SearchController;
use App\Http\Controllers\Api\StatisticsController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
// 公开路由
Route::post('/auth/login', [AuthController::class, 'login']);
// 需要认证的路由
Route::middleware('auth:sanctum')->group(function () {
// 认证相关
Route::post('/auth/logout', [AuthController::class, 'logout']);
// 仅管理员可访问的路由
Route::middleware('admin')->group(function () {
Route::post('/auth/register', [AuthController::class, 'register']);
Route::apiResource('users', UserController::class);
});
// 文章相关
Route::apiResource('posts', PostController::class);
// 评论相关
Route::apiResource('posts.comments', CommentController::class)
->shallow();
// 分类相关
Route::apiResource('categories', CategoryController::class);
// 搜索相关路由
Route::prefix('search')->group(function () {
Route::get('posts', [SearchController::class, 'posts']);
Route::get('posts/{post}/related', [SearchController::class, 'relatedPosts']);
});
// 统计相关路由
Route::middleware('auth:sanctum')->prefix('statistics')->group(function () {
Route::get('posts', [StatisticsController::class, 'posts']);
Route::get('user-activities', [StatisticsController::class, 'userActivities']);
});
// 文章阅读量统计
Route::get('posts/popular', [PostController::class, 'popular']);
// 分类相关路由
Route::get('categories/{category}/posts', [CategoryController::class, 'posts']);
});
// 添加 API 版本信息路由
Route::get('/', function () {
return response()->json([
'name' => 'Blog API',
'version' => '1.0',
'documentation' => url('/api/documentation'),
]);
});