# API 라우팅 가이드 **작성일**: 2024-12-20 **목적**: 프론트엔드에서 사용 가능한 모든 API 엔드포인트 정리 ## 🎯 사용 가능한 API 엔드포인트 ### 1. 벤더사 관련 API #### 인플루언서 요청 목록 조회 ``` POST /api/vendor-influencer/requests POST /api/vendor/influencer-requests POST /api/v2/vendor/influencer-requests ``` #### 승인/거절 처리 ``` POST /api/vendor-influencer/process-request POST /api/vendor/process-request POST /api/v2/vendor/process-request POST /vendor-influencer/process-request ``` #### 파트너십 해지 ``` POST /api/vendor-influencer/terminate POST /api/v2/vendor/terminate ``` #### 상태 통계 ``` POST /api/vendor-influencer/status-stats POST /api/v2/vendor/status-stats ``` ### 2. 인플루언서 관련 API #### 벤더사 검색 ``` POST /api/vendor-influencer/search-vendors POST /api/influencer/search-vendors POST /api/v2/influencer/search-vendors ``` #### 승인 요청 생성 ``` POST /api/vendor-influencer/create-request POST /api/influencer/create-request POST /api/v2/influencer/create-request ``` #### 재승인 요청 ``` POST /api/vendor-influencer/reapply-request POST /api/influencer/reapply-request POST /api/v2/influencer/reapply-request POST /vendor-influencer/reapply-request ``` #### 내 파트너십 목록 ``` POST /api/vendor-influencer/my-partnerships POST /api/influencer/my-partnerships POST /api/v2/influencer/my-partnerships ``` #### 파트너십 해지 ``` POST /api/vendor-influencer/terminate POST /api/influencer/terminate POST /api/v2/influencer/terminate ``` ## 🚀 권장 사용법 ### 1. 우선순위 (권장 순서) 1. **V2 API** (가장 안정적) ``` /api/v2/vendor/... /api/v2/influencer/... ``` 2. **호환성 API** (기존 코드용) ``` /api/vendor-influencer/... /api/vendor/... /api/influencer/... ``` 3. **레거시 API** (점진적 제거 예정) ``` /vendor-influencer/... ``` ### 2. 요청 예시 #### 벤더사: 인플루언서 요청 목록 조회 ```javascript // 방법 1: V2 API (권장) POST /api/v2/vendor/influencer-requests { "vendorSeq": 123, "status": "PENDING", "page": 1, "size": 20 } // 방법 2: 호환성 API POST /api/vendor-influencer/requests { "vendorSeq": 123, "status": "PENDING", "page": 1, "size": 20 } ``` #### 벤더사: 승인/거절 처리 ```javascript // 방법 1: V2 API (권장) POST /api/v2/vendor/process-request { "mappingSeq": 456, "action": "approve", // 또는 "reject" "processedBy": 789, "responseMessage": "승인합니다" } // 방법 2: 호환성 API POST /api/vendor-influencer/process-request { "mappingSeq": 456, "action": "approve", "processedBy": 789, "responseMessage": "승인합니다" } ``` #### 인플루언서: 재승인 요청 ```javascript // 방법 1: V2 API (권장) POST /api/v2/influencer/reapply-request { "vendorSeq": 123, "influencerSeq": 456, "requestMessage": "재승인 요청합니다", "requestedBy": 456 } // 방법 2: 호환성 API POST /api/vendor-influencer/reapply-request { "vendorSeq": 123, "influencerSeq": 456, "requestMessage": "재승인 요청합니다", "requestedBy": 456 } ``` ## 🔧 응답 형식 ### 성공 응답 ```json { "success": true, "message": "요청이 성공적으로 처리되었습니다.", "data": { // 응답 데이터 } } ``` ### 실패 응답 ```json { "success": false, "message": "오류 메시지", "error": "상세 오류 정보" } ``` ## 🚨 주의사항 ### 1. 히스토리 테이블 기반 (V2) - 모든 상태 변경이 이력으로 기록됨 - 중복 키 오류 완전 해결 - 트랜잭션 기반 안전한 처리 ### 2. 호환성 라우팅 - 기존 프론트엔드 코드와 호환 - V2 컨트롤러로 자동 연결 - 점진적 이전 가능 ### 3. 파라미터 검증 - 모든 필수 파라미터 검증 - action 값 검증 ('approve', 'reject') - 상태 전환 규칙 검증 ## 📈 마이그레이션 가이드 ### 기존 코드 → V2 API 이전 #### 1단계: 엔드포인트 변경 ```javascript // 기존 const endpoint = '/api/vendor-influencer/requests'; // 변경 const endpoint = '/api/v2/vendor/influencer-requests'; ``` #### 2단계: 응답 필드 확인 ```javascript // 기존 vendor.PARTNERSHIP_STATUS = response.STATUS; // 변경 (V2) vendor.PARTNERSHIP_STATUS = response.CURRENT_STATUS; vendor.PARTNERSHIP_MESSAGE = response.CURRENT_STATUS_MESSAGE; ``` #### 3단계: 테스트 및 검증 ```javascript // V2 API 응답 확인 console.log('현재 상태:', response.CURRENT_STATUS); console.log('상태 메시지:', response.CURRENT_STATUS_MESSAGE); console.log('상태 변경일:', response.STATUS_CHANGED_DATE); ``` **✅ 모든 API 엔드포인트가 정상적으로 작동합니다!**