대시보드 개요

-

총 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

시스템 모니터링

서버 상태

확인 중...

데이터베이스 연결

확인 중...