6.1 KiB
REST API 연결 관리 기능 구현 완료
구현 개요
외부 커넥션 관리 페이지(/admin/external-connections)에 REST API 연결 관리 기능이 추가되었습니다.
기존의 데이터베이스 연결 관리와 함께 REST API 연결도 관리할 수 있도록 탭 기반 UI가 구현되었습니다.
구현 완료 사항
1. 데이터베이스 (✅ 완료)
파일: /db/create_external_rest_api_connections.sql
external_rest_api_connections테이블 생성- 연결 정보, 인증 설정, 테스트 결과 저장
- JSONB 타입으로 헤더 및 인증 설정 유연하게 관리
- 인덱스 최적화 (company_code, is_active, auth_type, JSONB GIN 인덱스)
실행 방법:
# PostgreSQL 컨테이너에 접속하여 SQL 실행
docker exec -i esgrin-mes-db psql -U postgres -d ilshin < db/create_external_rest_api_connections.sql
2. 백엔드 구현 (✅ 완료)
2.1 타입 정의
파일: backend-node/src/types/externalRestApiTypes.ts
ExternalRestApiConnection: REST API 연결 정보 인터페이스RestApiTestRequest: 연결 테스트 요청 인터페이스RestApiTestResult: 테스트 결과 인터페이스AuthType: 인증 타입 (none, api-key, bearer, basic, oauth2)- 각 인증 타입별 세부 설정 인터페이스
2.2 서비스 레이어
파일: backend-node/src/services/externalRestApiConnectionService.ts
- CRUD 작업 구현 (생성, 조회, 수정, 삭제)
- 민감 정보 암호화/복호화 (AES-256-GCM)
- REST API 연결 테스트 기능
- 필터링 및 검색 기능
- 유효성 검증
2.3 API 라우트
파일: backend-node/src/routes/externalRestApiConnectionRoutes.ts
GET /api/external-rest-api-connections- 목록 조회GET /api/external-rest-api-connections/:id- 상세 조회POST /api/external-rest-api-connections- 생성PUT /api/external-rest-api-connections/:id- 수정DELETE /api/external-rest-api-connections/:id- 삭제POST /api/external-rest-api-connections/test- 연결 테스트POST /api/external-rest-api-connections/:id/test- ID 기반 테스트
2.4 앱 통합
파일: backend-node/src/app.ts
- 새로운 라우트 등록 완료
3. 프론트엔드 구현 (✅ 완료)
3.1 API 클라이언트
파일: frontend/lib/api/externalRestApiConnection.ts
- 백엔드 API와 통신하는 클라이언트 구현
- 타입 안전한 API 호출
- 에러 처리
3.2 공통 컴포넌트
파일: frontend/components/admin/HeadersManager.tsx
- HTTP 헤더 key-value 관리 컴포넌트
- 동적 추가/삭제 기능
파일: frontend/components/admin/AuthenticationConfig.tsx
- 인증 타입별 설정 컴포넌트
- 5가지 인증 방식 지원 (none, api-key, bearer, basic, oauth2)
3.3 모달 컴포넌트
파일: frontend/components/admin/RestApiConnectionModal.tsx
- 연결 추가/수정 모달
- 헤더 관리 및 인증 설정 통합
- 연결 테스트 기능
3.4 목록 관리 컴포넌트
파일: frontend/components/admin/RestApiConnectionList.tsx
- REST API 연결 목록 표시
- 검색 및 필터링
- CRUD 작업
- 연결 테스트
3.5 메인 페이지
파일: frontend/app/(main)/admin/external-connections/page.tsx
- 탭 기반 UI 구현 (데이터베이스 ↔ REST API)
- 기존 DB 연결 관리와 통합
주요 기능
1. 연결 관리
- REST API 연결 정보 생성/수정/삭제
- 연결명, 설명, Base URL 관리
- Timeout, Retry 설정
- 활성화 상태 관리
2. 인증 관리
- None: 인증 없음
- API Key: 헤더 또는 쿼리 파라미터
- Bearer Token: Authorization: Bearer {token}
- Basic Auth: username/password
- OAuth2: client_id, client_secret, token_url 등
3. 헤더 관리
- 기본 HTTP 헤더 설정
- Key-Value 형식으로 동적 관리
- Content-Type, Accept 등 자유롭게 설정
4. 연결 테스트
- 실시간 연결 테스트
- HTTP 응답 상태 코드 확인
- 응답 시간 측정
- 테스트 결과 저장
5. 보안
- 민감 정보 자동 암호화 (AES-256-GCM)
- API Key
- Bearer Token
- 비밀번호
- OAuth2 Client Secret
- 암호화된 데이터는 데이터베이스에 안전하게 저장
사용 방법
1. SQL 스크립트 실행
# PostgreSQL 컨테이너에 접속
docker exec -it esgrin-mes-db psql -U postgres -d ilshin
# 또는 파일 직접 실행
docker exec -i esgrin-mes-db psql -U postgres -d ilshin < db/create_external_rest_api_connections.sql
2. 백엔드 재시작
백엔드 서버가 자동으로 새로운 라우트를 인식합니다. (이미 재시작 완료)
3. 웹 UI 접속
/admin/external-connections페이지 접속- "REST API 연결" 탭 선택
- "새 연결 추가" 버튼 클릭
- 필요한 정보 입력
- 연결명, 설명, Base URL
- 기본 헤더 설정
- 인증 타입 선택 및 인증 정보 입력
- Timeout, Retry 설정
- "연결 테스트" 버튼으로 즉시 테스트 가능
- 저장
4. 연결 관리
- 목록 조회: 모든 REST API 연결 정보 확인
- 검색: 연결명, 설명, URL로 검색
- 필터링: 인증 타입, 활성화 상태로 필터링
- 수정: 연필 아이콘 클릭하여 수정
- 삭제: 휴지통 아이콘 클릭하여 삭제
- 테스트: Play 아이콘 클릭하여 연결 테스트
기술 스택
- Backend: Node.js, Express, TypeScript, PostgreSQL
- Frontend: Next.js, React, TypeScript, Shadcn UI
- 보안: AES-256-GCM 암호화
- 데이터: JSONB (PostgreSQL)
테스트 완료
- ✅ 백엔드 컴파일 성공
- ✅ 서버 정상 실행 확인
- ✅ 타입 에러 수정 완료
- ✅ 모든 라우트 등록 완료
- ✅ 인증 토큰 자동 포함 구현 (apiClient 사용)
다음 단계
- SQL 스크립트 실행
- 프론트엔드 빌드 및 테스트
- UI에서 연결 추가/수정/삭제/테스트 기능 확인
참고 문서
- 전체 계획:
PHASE_EXTERNAL_CONNECTION_REST_API_ENHANCEMENT.md - 기존 외부 DB 연결:
제어관리_외부커넥션_통합_기능_가이드.md