feat: [API Explorer] Phase 1 완성 - 히스토리 로드, 밸리데이션, 유니코드 처리

- 히스토리 로드 기능 구현 (loadFromHistory, fillFormFromHistory)
- 클라이언트 사이드 필수값 밸리데이션 추가
- 응답 본문 \xXX UTF-8 바이트 시퀀스 디코딩 (PHP 스택트레이스 한글 깨짐 해결)
- sidebar에 data-operation-id 속성 추가
- history-drawer 함수 연결 수정
- Flow Tester 변수 바인딩 개선
- 마이그레이션 파일 통합 정리
This commit is contained in:
2025-12-18 15:42:01 +09:00
parent 2ed273097e
commit a62337ef5c
15 changed files with 1328 additions and 217 deletions

View File

@@ -25,7 +25,10 @@ public function index(): View
->orderByDesc('created_at')
->paginate(20);
return view('dev-tools.flow-tester.index', compact('flows'));
// 세션에 저장된 토큰
$savedToken = session('flow_tester_token');
return view('dev-tools.flow-tester.index', compact('flows', 'savedToken'));
}
/**
@@ -329,4 +332,53 @@ public function runDetail(int $runId): View
return view('dev-tools.flow-tester.run-detail', compact('run'));
}
/*
|--------------------------------------------------------------------------
| Token Management
|--------------------------------------------------------------------------
*/
/**
* Bearer 토큰 저장
*/
public function saveToken(Request $request)
{
$validated = $request->validate([
'token' => 'required|string',
]);
session(['flow_tester_token' => $validated['token']]);
return response()->json([
'success' => true,
'message' => '토큰이 저장되었습니다.',
]);
}
/**
* Bearer 토큰 초기화
*/
public function clearToken()
{
session()->forget('flow_tester_token');
return response()->json([
'success' => true,
'message' => '토큰이 초기화되었습니다.',
]);
}
/**
* 현재 토큰 상태 조회
*/
public function tokenStatus()
{
$token = session('flow_tester_token');
return response()->json([
'has_token' => ! empty($token),
'token_preview' => $token ? substr($token, 0, 20).'...' : null,
]);
}
}