- 데이터베이스 스키마 및 변경 로그 문서화 - 신규 페이지 개발 가이드 작성 - 모듈 아키텍처 설계 문서 추가 - 성능 최적화 전략 문서화 - 리팩토링 계획 및 진행 상황 정리 Documentation: - DATABASE_SCHEMA.md: 전체 DB 스키마 구조 - DB_CHANGE_LOG.md: 마이그레이션 변경 이력 - DEVELOPMENT_GUIDE.md: 신규 기능 개발 표준 - MODULE_ARCHITECTURE.md: 프론트엔드 모듈 구조 - PERFORMANCE_OPTIMIZATION.md: 성능 최적화 가이드 - REFACTORING_PLAN.md: 리팩토링 진행 상황 Test Files: - app.html, app.js: SPA 테스트 파일 - test_api.html: API 테스트 페이지
59 lines
2.0 KiB
HTML
59 lines
2.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>API 테스트</title>
|
|
</head>
|
|
<body>
|
|
<h1>API 테스트 페이지</h1>
|
|
<button onclick="testLogin()">로그인 테스트</button>
|
|
<button onclick="testUsers()">사용자 목록 테스트</button>
|
|
<div id="result"></div>
|
|
|
|
<script>
|
|
let token = null;
|
|
|
|
async function testLogin() {
|
|
try {
|
|
const formData = new URLSearchParams();
|
|
formData.append('username', 'hyungi');
|
|
formData.append('password', '123456');
|
|
|
|
const response = await fetch('http://localhost:16080/api/auth/login', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
},
|
|
body: formData.toString()
|
|
});
|
|
|
|
const data = await response.json();
|
|
token = data.access_token;
|
|
document.getElementById('result').innerHTML = `<pre>로그인 성공: ${JSON.stringify(data, null, 2)}</pre>`;
|
|
} catch (error) {
|
|
document.getElementById('result').innerHTML = `<pre>로그인 실패: ${error.message}</pre>`;
|
|
}
|
|
}
|
|
|
|
async function testUsers() {
|
|
if (!token) {
|
|
alert('먼저 로그인하세요');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const response = await fetch('http://localhost:16080/api/auth/users', {
|
|
headers: {
|
|
'Authorization': `Bearer ${token}`
|
|
}
|
|
});
|
|
|
|
const data = await response.json();
|
|
document.getElementById('result').innerHTML = `<pre>사용자 목록: ${JSON.stringify(data, null, 2)}</pre>`;
|
|
} catch (error) {
|
|
document.getElementById('result').innerHTML = `<pre>사용자 목록 실패: ${error.message}</pre>`;
|
|
}
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|