대시보드 개요
-
총 API 키
-
총 요청 수
-
총 사용자
-
오늘 활성 키
빠른 작업
API 키 관리
| 키 이름 | API 키 | 권한 | 사용 횟수 | 마지막 사용 | 생성일 | 상태 | 작업 |
|---|
데이터 관리
데이터 관리 기능 안내
데이터 추가는 API_DATA 테이블에 샘플 데이터를 저장하는 기능입니다.
- 용도: REST API 테스트용 데이터 생성
- API 엔드포인트:
GET/POST/PUT/DELETE /api/data - 데이터 구조: 이름, 설명, 데이터 값, 생성/수정 시간
- 활용: 외부 시스템에서 API 키를 사용하여 이 데이터에 접근 가능
| ID | 이름 | 설명 | 데이터 값 | 생성일 | 수정일 | 작업 |
|---|
API 문서
🔑 API 키 사용법
모든 데이터 API 요청에는 API 키가 필요합니다.
방법 1: HTTP 헤더 (권장)
X-API-Key: ak_your_api_key_here
방법 2: 쿼리 파라미터
GET /api/data?api_key=ak_your_api_key_here
🔐 인증 API
POST
/auth/login
사용자 로그인
{
"username": "사용자명",
"password": "비밀번호"
}
POST
/auth/api-keys
API 키 생성 (JWT 토큰 필요)
{
"keyName": "키 이름",
"permissions": ["read", "write", "delete"]
}
👤 사용자 정보 API (USER_INFO_ORA)
GET
/api/users
모든 사용자 조회
헤더: X-API-Key: your-api-key
응답 예시:
[
{
"USER_ID": "user001",
"USER_NAME": "홍길동",
"DEPT_CODE": "IT001",
"REG_DATE": "2024-01-15"
}
]
GET
/api/users/{userId}
특정 사용자 조회
헤더: X-API-Key: your-api-key
POST
/api/users
새 사용자 생성
헤더: X-API-Key: your-api-key
요청 본문:
{
"USER_ID": "user002",
"USER_NAME": "김철수",
"DEPT_CODE": "HR001"
}
PUT
/api/users/{userId}
사용자 정보 수정
헤더: X-API-Key: your-api-key
요청 본문:
{
"USER_NAME": "김철수(수정)",
"DEPT_CODE": "IT002"
}
DELETE
/api/users/{userId}
사용자 삭제
헤더: X-API-Key: your-api-key
💻 언어별 사용 예시
Java (Spring Boot)
// RestTemplate 사용
@Service
public class UserService {
private static final String API_KEY = "ak_your_api_key_here";
private static final String BASE_URL = "http://localhost:5577/api";
@Autowired
private RestTemplate restTemplate;
public ResponseEntity<String> createUser(UserDto user) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("X-API-Key", API_KEY);
HttpEntity<UserDto> request = new HttpEntity<>(user, headers);
return restTemplate.postForEntity(
BASE_URL + "/users",
request,
String.class
);
}
}
// DTO 클래스
public class UserDto {
private String USER_ID;
private String USER_NAME;
private String DEPT_CODE;
// getters and setters
}
// 모든 사용자 조회
public List<UserDto> getAllUsers() {
HttpHeaders headers = new HttpHeaders();
headers.set("X-API-Key", API_KEY);
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<UserDto[]> response = restTemplate.exchange(
BASE_URL + "/users",
HttpMethod.GET,
entity,
UserDto[].class
);
return Arrays.asList(response.getBody());
}
// 특정 사용자 조회
public UserDto getUserById(String userId) {
HttpHeaders headers = new HttpHeaders();
headers.set("X-API-Key", API_KEY);
HttpEntity<String> entity = new HttpEntity<>(headers);
return restTemplate.exchange(
BASE_URL + "/users/" + userId,
HttpMethod.GET,
entity,
UserDto.class
).getBody();
}
// 사용자 정보 수정
public ResponseEntity<String> updateUser(String userId, UserDto user) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("X-API-Key", API_KEY);
HttpEntity<UserDto> request = new HttpEntity<>(user, headers);
return restTemplate.exchange(
BASE_URL + "/users/" + userId,
HttpMethod.PUT,
request,
String.class
);
}
// 사용자 삭제
public ResponseEntity<String> deleteUser(String userId) {
HttpHeaders headers = new HttpHeaders();
headers.set("X-API-Key", API_KEY);
HttpEntity<String> entity = new HttpEntity<>(headers);
return restTemplate.exchange(
BASE_URL + "/users/" + userId,
HttpMethod.DELETE,
entity,
String.class
);
}
React (JavaScript)
// API 설정
const API_KEY = 'ak_your_api_key_here';
const BASE_URL = 'http://localhost:5577/api';
// 사용자 생성
const createUser = async (userData) => {
try {
const response = await fetch(`${BASE_URL}/users`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify(userData)
});
if (!response.ok) {
throw new Error('사용자 생성 실패');
}
return await response.json();
} catch (error) {
console.error('Error:', error);
throw error;
}
};
// React 컴포넌트에서 사용
const UserForm = () => {
const handleSubmit = async (e) => {
e.preventDefault();
const userData = {
USER_ID: 'user003',
USER_NAME: '이영희',
DEPT_CODE: 'SALES001'
};
try {
await createUser(userData);
alert('사용자가 생성되었습니다!');
} catch (error) {
alert('생성 실패: ' + error.message);
}
};
return (
<form onSubmit={handleSubmit}>
{/* 폼 내용 */}
</form>
);
};
// 모든 사용자 조회
const getAllUsers = async () => {
try {
const response = await fetch(`${BASE_URL}/users`, {
method: 'GET',
headers: {
'X-API-Key': API_KEY
}
});
if (!response.ok) {
throw new Error('사용자 조회 실패');
}
return await response.json();
} catch (error) {
console.error('Error:', error);
throw error;
}
};
// React Hook 사용
const UserList = () => {
const [users, setUsers] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
const fetchUsers = async () => {
try {
const userData = await getAllUsers();
setUsers(userData);
} catch (error) {
console.error('사용자 로드 실패:', error);
} finally {
setLoading(false);
}
};
fetchUsers();
}, []);
if (loading) return <div>로딩 중...</div>;
return (
<ul>
{users.map(user => (
<li key={user.USER_ID}>
{user.USER_NAME} ({user.DEPT_CODE})
</li>
))}
</ul>
);
};
// 사용자 정보 수정
const updateUser = async (userId, userData) => {
try {
const response = await fetch(`${BASE_URL}/users/${userId}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify(userData)
});
if (!response.ok) {
throw new Error('사용자 수정 실패');
}
return await response.json();
} catch (error) {
console.error('Error:', error);
throw error;
}
};
// 사용 예시
const handleUpdate = async () => {
const updatedData = {
USER_NAME: '이영희(수정)',
DEPT_CODE: 'IT003'
};
try {
await updateUser('user003', updatedData);
alert('사용자 정보가 수정되었습니다!');
} catch (error) {
alert('수정 실패: ' + error.message);
}
};
// 사용자 삭제
const deleteUser = async (userId) => {
try {
const response = await fetch(`${BASE_URL}/users/${userId}`, {
method: 'DELETE',
headers: {
'X-API-Key': API_KEY
}
});
if (!response.ok) {
throw new Error('사용자 삭제 실패');
}
return await response.json();
} catch (error) {
console.error('Error:', error);
throw error;
}
};
// 삭제 확인 후 실행
const handleDelete = async (userId) => {
if (window.confirm('정말 삭제하시겠습니까?')) {
try {
await deleteUser(userId);
alert('사용자가 삭제되었습니다!');
// 목록 새로고침
fetchUsers();
} catch (error) {
alert('삭제 실패: ' + error.message);
}
}
};
Python (requests)
import requests
import json
API_KEY = 'ak_your_api_key_here'
BASE_URL = 'http://localhost:5577/api'
class UserAPI:
def __init__(self):
self.headers = {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
}
def create_user(self, user_data):
"""사용자 생성"""
response = requests.post(
f'{BASE_URL}/users',
headers=self.headers,
json=user_data
)
return response.json()
def get_all_users(self):
"""모든 사용자 조회"""
response = requests.get(
f'{BASE_URL}/users',
headers={'X-API-Key': API_KEY}
)
return response.json()
def get_user(self, user_id):
"""특정 사용자 조회"""
response = requests.get(
f'{BASE_URL}/users/{user_id}',
headers={'X-API-Key': API_KEY}
)
return response.json()
def update_user(self, user_id, user_data):
"""사용자 정보 수정"""
response = requests.put(
f'{BASE_URL}/users/{user_id}',
headers=self.headers,
json=user_data
)
return response.json()
def delete_user(self, user_id):
"""사용자 삭제"""
response = requests.delete(
f'{BASE_URL}/users/{user_id}',
headers={'X-API-Key': API_KEY}
)
return response.json()
# 사용 예시
api = UserAPI()
# 사용자 생성
new_user = {
'USER_ID': 'user004',
'USER_NAME': '박민수',
'DEPT_CODE': 'DEV001'
}
result = api.create_user(new_user)
cURL
# 사용자 생성 (INSERT)
curl -X POST http://localhost:5577/api/users \
-H "Content-Type: application/json" \
-H "X-API-Key: ak_your_api_key_here" \
-d '{
"USER_ID": "user005",
"USER_NAME": "최수진",
"DEPT_CODE": "MKT001"
}'
# 모든 사용자 조회 (SELECT)
curl -X GET http://localhost:5577/api/users \
-H "X-API-Key: ak_your_api_key_here"
# 특정 사용자 조회
curl -X GET http://localhost:5577/api/users/user005 \
-H "X-API-Key: ak_your_api_key_here"
# 사용자 정보 수정 (UPDATE)
curl -X PUT http://localhost:5577/api/users/user005 \
-H "Content-Type: application/json" \
-H "X-API-Key: ak_your_api_key_here" \
-d '{
"USER_NAME": "최수진(수정)",
"DEPT_CODE": "MKT002"
}'
# 사용자 삭제 (DELETE)
curl -X DELETE http://localhost:5577/api/users/user005 \
-H "X-API-Key: ak_your_api_key_here"
📊 기본 데이터 API
GET
/api/data
모든 데이터 조회 (API 키 필요)
헤더: X-API-Key: your-api-key
POST
/api/data
데이터 생성 (API 키 필요)
{
"name": "데이터 이름",
"description": "설명",
"dataValue": "값"
}
API 테스터
브라우저에서 직접 REST API를 테스트해보세요.
또는 직접 입력:
http://localhost:5577
빠른 테스트 예제 - User CRUD
사용자 관리
| ID | 사용자명 | 이메일 | 역할 | 상태 | 가입일 | 마지막 로그인 |
|---|
API 호출 로그
-
총 API 요청
-
오늘 요청
| 시간 | 메소드 | 엔드포인트 | 사용자 | API 키 | 상태 | 응답시간 | IP |
|---|
시스템 모니터링
서버 상태
확인 중...
데이터베이스 연결
확인 중...