feat: [api-explorer] Phase 1 기본 구조 및 OpenAPI 파싱 구현
- Config, Service, Controller, View 생성 - Model 4개 (admin_api_* 테이블 참조) - 3-Panel 레이아웃 (sidebar, request, response) - HTMX 기반 동적 UI - 마이그레이션은 api/ 프로젝트에서 관리
This commit is contained in:
@@ -1,11 +1,17 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\ApiLogController;
|
||||
use App\Http\Controllers\ArchivedRecordController;
|
||||
use App\Http\Controllers\Auth\LoginController;
|
||||
use App\Http\Controllers\BoardController;
|
||||
use App\Http\Controllers\DailyLogController;
|
||||
use App\Http\Controllers\DepartmentController;
|
||||
use App\Http\Controllers\DevTools\ApiExplorerController;
|
||||
use App\Http\Controllers\DevTools\FlowTesterController;
|
||||
use App\Http\Controllers\ItemFieldController;
|
||||
use App\Http\Controllers\Lab\AIController;
|
||||
use App\Http\Controllers\Lab\ManagementController;
|
||||
use App\Http\Controllers\Lab\StrategyController;
|
||||
use App\Http\Controllers\MenuController;
|
||||
use App\Http\Controllers\PermissionController;
|
||||
use App\Http\Controllers\PostController;
|
||||
@@ -15,11 +21,6 @@
|
||||
use App\Http\Controllers\RoleController;
|
||||
use App\Http\Controllers\RolePermissionController;
|
||||
use App\Http\Controllers\TenantController;
|
||||
use App\Http\Controllers\ItemFieldController;
|
||||
use App\Http\Controllers\ApiLogController;
|
||||
use App\Http\Controllers\Lab\AIController;
|
||||
use App\Http\Controllers\Lab\ManagementController;
|
||||
use App\Http\Controllers\Lab\StrategyController;
|
||||
use App\Http\Controllers\UserController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
@@ -294,5 +295,45 @@
|
||||
Route::post('/{id}/run', [FlowTesterController::class, 'run'])->name('run');
|
||||
Route::get('/{id}/history', [FlowTesterController::class, 'history'])->name('history');
|
||||
});
|
||||
|
||||
// API Explorer (OpenAPI 3.0 뷰어)
|
||||
Route::prefix('api-explorer')->name('api-explorer.')->group(function () {
|
||||
// 메인 뷰
|
||||
Route::get('/', [ApiExplorerController::class, 'index'])->name('index');
|
||||
|
||||
// 엔드포인트 (HTMX)
|
||||
Route::get('/endpoints', [ApiExplorerController::class, 'endpoints'])->name('endpoints');
|
||||
Route::get('/endpoints/{operationId}', [ApiExplorerController::class, 'endpoint'])->name('endpoint');
|
||||
|
||||
// API 실행
|
||||
Route::post('/execute', [ApiExplorerController::class, 'execute'])->name('execute');
|
||||
|
||||
// 즐겨찾기
|
||||
Route::get('/bookmarks', [ApiExplorerController::class, 'bookmarks'])->name('bookmarks.index');
|
||||
Route::post('/bookmarks', [ApiExplorerController::class, 'storeBookmark'])->name('bookmarks.store');
|
||||
Route::put('/bookmarks/{id}', [ApiExplorerController::class, 'updateBookmark'])->name('bookmarks.update');
|
||||
Route::delete('/bookmarks/{id}', [ApiExplorerController::class, 'deleteBookmark'])->name('bookmarks.destroy');
|
||||
Route::post('/bookmarks/toggle', [ApiExplorerController::class, 'toggleBookmark'])->name('bookmarks.toggle');
|
||||
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::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::delete('/environments/{id}', [ApiExplorerController::class, 'deleteEnvironment'])->name('environments.destroy');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user