+ +
+

대시보드 개요

+
+
+
+ +
+
+

-

+

총 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 + +
+
+
+ + + + + +
+ + +
+
+ + + + + +
+

빠른 테스트 예제

+
+ + + + + +
+
+
+ + +
+

사용자 관리

+
+ + + + + + + + + + + + + + + +
ID사용자명이메일역할상태가입일마지막 로그인
+
+
+ + +
+

API 호출 로그

+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+
+ + +
+
+
+

-

+

총 API 요청

+
+
+
+
+

-

+

오늘 요청

+
+
+
+ + +
+ + + + + + + + + + + + + + + + +
시간메소드엔드포인트사용자API 키상태응답시간IP
+
+ + + +
+ + +
+

시스템 모니터링

+
+
+

서버 상태

+
+ 확인 중... +
+
+
+

데이터베이스 연결

+
+ 확인 중... +
+
+
+
+