feat: API 사용 현황 및 폐기 후보 관리 기능 추가

- API 사용 통계 조회 및 미사용 API 식별 기능
- 폐기 후보 등록/상태변경/삭제 기능
- API Explorer에서 사용 현황 페이지 링크 추가
- 북마크 토글 버그 수정 (라우트-컨트롤러 메서드명 일치)
This commit is contained in:
2025-12-18 20:26:17 +09:00
parent 84e0a09a29
commit 15a66a345e
7 changed files with 1269 additions and 10 deletions

View File

@@ -324,26 +324,36 @@
Route::post('/bookmarks/reorder', [ApiExplorerController::class, 'reorderBookmarks'])->name('bookmarks.reorder');
// 템플릿
Route::get('/templates/{endpoint}', [ApiExplorerController::class, 'templates'])->name('templates.index');
Route::post('/templates', [ApiExplorerController::class, 'storeTemplate'])->name('templates.store');
Route::put('/templates/{id}', [ApiExplorerController::class, 'updateTemplate'])->name('templates.update');
Route::get('/templates/{endpoint}', [ApiExplorerController::class, 'templatesForEndpoint'])->name('templates.index');
Route::post('/templates', [ApiExplorerController::class, 'saveTemplate'])->name('templates.store');
Route::delete('/templates/{id}', [ApiExplorerController::class, 'deleteTemplate'])->name('templates.destroy');
// 히스토리
Route::get('/history', [ApiExplorerController::class, 'history'])->name('history.index');
Route::get('/history/{id}', [ApiExplorerController::class, 'historyDetail'])->name('history.show');
Route::post('/history/{id}/replay', [ApiExplorerController::class, 'replayHistory'])->name('history.replay');
Route::delete('/history/{id}', [ApiExplorerController::class, 'deleteHistory'])->name('history.destroy');
Route::delete('/history', [ApiExplorerController::class, 'clearHistory'])->name('history.clear');
// 환경 설정
Route::get('/environments', [ApiExplorerController::class, 'environments'])->name('environments.index');
Route::post('/environments', [ApiExplorerController::class, 'storeEnvironment'])->name('environments.store');
Route::put('/environments/{id}', [ApiExplorerController::class, 'updateEnvironment'])->name('environments.update');
Route::post('/environments', [ApiExplorerController::class, 'saveEnvironment'])->name('environments.store');
Route::delete('/environments/{id}', [ApiExplorerController::class, 'deleteEnvironment'])->name('environments.destroy');
// 사용자 목록 (인증용)
Route::get('/users', [ApiExplorerController::class, 'users'])->name('users');
// API 사용 현황 및 폐기 관리
Route::get('/usage', [ApiExplorerController::class, 'usage'])->name('usage');
Route::get('/usage/stats', [ApiExplorerController::class, 'usageStats'])->name('usage.stats');
Route::get('/usage/trend', [ApiExplorerController::class, 'dailyTrend'])->name('usage.trend');
Route::get('/usage/popular', [ApiExplorerController::class, 'popularApis'])->name('usage.popular');
Route::get('/usage/stale', [ApiExplorerController::class, 'staleApis'])->name('usage.stale');
// 폐기 후보 관리
Route::get('/deprecations', [ApiExplorerController::class, 'deprecations'])->name('deprecations.index');
Route::post('/deprecations', [ApiExplorerController::class, 'addDeprecation'])->name('deprecations.store');
Route::post('/deprecations/bulk-unused', [ApiExplorerController::class, 'addAllUnusedAsDeprecation'])->name('deprecations.bulk-unused');
Route::put('/deprecations/{id}', [ApiExplorerController::class, 'updateDeprecation'])->name('deprecations.update');
Route::delete('/deprecations/{id}', [ApiExplorerController::class, 'removeDeprecation'])->name('deprecations.destroy');
});
});
});