ERP-node/PHASE_EXTERNAL_CONNECTION_R...

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 접속

  1. /admin/external-connections 페이지 접속
  2. "REST API 연결" 탭 선택
  3. "새 연결 추가" 버튼 클릭
  4. 필요한 정보 입력
    • 연결명, 설명, Base URL
    • 기본 헤더 설정
    • 인증 타입 선택 및 인증 정보 입력
    • Timeout, Retry 설정
  5. "연결 테스트" 버튼으로 즉시 테스트 가능
  6. 저장

4. 연결 관리

  • 목록 조회: 모든 REST API 연결 정보 확인
  • 검색: 연결명, 설명, URL로 검색
  • 필터링: 인증 타입, 활성화 상태로 필터링
  • 수정: 연필 아이콘 클릭하여 수정
  • 삭제: 휴지통 아이콘 클릭하여 삭제
  • 테스트: Play 아이콘 클릭하여 연결 테스트

기술 스택

  • Backend: Node.js, Express, TypeScript, PostgreSQL
  • Frontend: Next.js, React, TypeScript, Shadcn UI
  • 보안: AES-256-GCM 암호화
  • 데이터: JSONB (PostgreSQL)

테스트 완료

  • 백엔드 컴파일 성공
  • 서버 정상 실행 확인
  • 타입 에러 수정 완료
  • 모든 라우트 등록 완료
  • 인증 토큰 자동 포함 구현 (apiClient 사용)

다음 단계

  1. SQL 스크립트 실행
  2. 프론트엔드 빌드 및 테스트
  3. UI에서 연결 추가/수정/삭제/테스트 기능 확인

참고 문서

  • 전체 계획: PHASE_EXTERNAL_CONNECTION_REST_API_ENHANCEMENT.md
  • 기존 외부 DB 연결: 제어관리_외부커넥션_통합_기능_가이드.md