taravel/routes/api.php
2024-11-13 16:26:27 +08:00

52 lines
1.9 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\PromptController;
use App\Http\Controllers\Api\Admin\ApiConfigController;
use App\Http\Controllers\Api\Frontend\LoginController;
use App\Http\Controllers\Api\Frontend\RegisterController;
/*
|--------------------------------------------------------------------------
| 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.
|
*/
Route::middleware(['auth:sanctum', 'rate.limit.prompts'])->group(function () {
Route::post('/prompt', [PromptController::class, 'process']);
});
// API 路由群組
Route::prefix('v1')->group(function () {
// 管理員 API 路由
Route::prefix('admin')
->middleware(['auth:sanctum', 'check.role:admin'])
->group(function () {
// API 提供者管理
Route::prefix('providers')->group(function () {
Route::get('/', [ApiConfigController::class, 'index']);
Route::post('/', [ApiConfigController::class, 'store']);
Route::delete('/{provider_id}', [ApiConfigController::class, 'destroy']);
Route::post('/{provider_id}/activate', [ApiConfigController::class, 'activate']);
});
});
});
// 前端 API 路由
Route::prefix('frontend')->group(function () {
// 公開路由
Route::post('/login', [LoginController::class, 'login']);
Route::post('/register', [RegisterController::class, 'register']);
// 需要認證的路由
Route::middleware(['auth:sanctum', 'check.status'])->group(function () {
Route::post('/logout', [LoginController::class, 'logout']);
Route::post('/send-prompt', [PromptController::class, 'sendPrompt'])
->middleware('throttle:prompts');
});
});