83 lines
2.7 KiB
PHP
83 lines
2.7 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::get('/check', function () {
|
|
return response('CHECKED', 200)
|
|
->header('Content-Type', 'text/plain');
|
|
});
|
|
|
|
// 需要认证的路由
|
|
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'),
|
|
]);
|
|
});
|