FedEx API 모범 사례
본 문서는 API 사용자가 FedEx와의 통합 경험을 개선하고 설계, 속도, 보안의 측면에서 통합 솔루션의 품질을 보장할 수 있는 방법을 이해하도록 돕기 위한 빠른 참조 가이드입니다.
FedEx API와 효율적인 통합을 실천하려면, 개발자는 이러한 통합 모범 사례를 따라야 합니다.
API URI
- 테스트와 프로덕션 각각 별도의 API URI가 있습니다.
- 개발자는 개발 및 통합 테스팅에 테스트 URI를 사용하고 프로덕션에는 프로덕션 URI를 사용해야 합니다.
API URI는 다음과 같습니다.
테스트: https://apis-sandbox.fedex.com/
프로덕션: https://apis.fedex.com/
자격 증명 관리
API 키 및 시크릿 키
- API 키와 시크릿 키는 응용 프로그램을 식별하는 데 사용되며 OAuth 토큰을 요청할 때 필요합니다.
- API 키와 시크릿 키는 보안을 철저하게 관리해야 합니다. 이메일이나 클라이언트측 JavaScript를 비롯한 배포 코드를 통해 API 키 또는 시크릿 키를 배포하지 마십시오.
- API 키나 시크릿 키를 도난당하면 응용 프로그램의 보안이 위험해집니다. 자격 증명이 도난당했거나 유출되었다고 생각되면 즉시 시크릿 키를 다시 만드십시오.
- 시크릿 키와 같은 민감한 정보는 로그 기록을 피하십시오.
- 코드에 API 키와 시크릿 키를 하드코드에 포함하지 마십시오.
- 응용 프로그램에서 API 키와 시크릿 키를 유동적으로 업데이트할 수 있어야 합니다.
- 클라이언트 자격 증명을 볼트(vault)/안전 위치에 저장해 유출되지 않도록 하십시오.
OAuth 토큰
- 액세스 토큰은 웹 응용 프로그램 서버에만 저장해 브라우저에 노출되지 않도록 하십시오.
- 토큰을 응용 프로그램에 하드코드로 포함하지 마십시오.
- 액세스 토큰이 손상되지 않도록 안전하게 보관하십시오.
- 새 액세스 토큰을 받기 위해 OAuth 토큰 API를 여러 번 호출하지 마십시오. HTTP 오류 코드 401을 수신할 때까지 액세스 토큰을 캐시하는 것이 좋습니다. 오류 코드가 나타나면 OAuth 토큰을 다시 생성하십시오.
- 토큰을 최종 사용자 또는 응용 프로그램에 노출하지 마십시오.
- 모든 API 트랜잭션에는 HTTPS를 사용하십시오.
코딩 사례
- 가장 안전한 최신 데이터 암호화 통신 프로토콜을 준수하기 위해 전송 계층 보안(TLS) 버전 1.2 이상을 사용하는 것이 좋습니다.
- 각 API 요청에 필요한 올바른 API 헤더를 잊지 말고 설정하십시오. 이 헤더 정보는 각 API 문서 페이지에서 확인할 수 있습니다.
- HTTP POST의 'Content-Type'은 'application/json'이어야 합니다.
- 각 API 작업을 시작할 때 샘플 코드를 참조하십시오. 각 API 엔드포인트에는 필수 요소, 형식 및 기타 세부 정보를 이해하는 데 도움이 되는 여러 샘플이 포함되어 있습니다.
- 사용자 또는 개발자가 여러 소수점이 있는 값을 전송하면 이상한 오류가 발생할 수 있습니다. 무게 및 통화 값/금액의 경우 명시적인 두 자리 소수점만 허용됩니다. 길이, 폭, 높이 등의 치수는 소수점을 지원하지 않습니다.
- 빈 요소를 전송하지 마십시오.
- 요청을 처리하는 데 필요한 데이터만 전송하십시오.
- 개발 시 운임처럼 비필수 응답 요소가 반환되지 않은 경우에 어떻게 반응할지 결정하십시오. 데이터를 사용하기 전 트랜잭션 응답에 누락된 요소는 없는지 평가하십시오.
- 가능하면 FedEx API 통합에 대한 하드 의존성을 피하십시오.
- 지연 시간을 줄이고 정확한 결과를 얻으려면 다음을 사용해야 합니다.
- 필터링 - 찾고 있는 매개 변수로 검색 범위를 좁힐 때 사용합니다.
- 정렬 - 특정 매개 변수를 기준으로 검색 결과를 오름차순 또는 내림차순으로 정렬하는 데 사용합니다.
- 트랜잭션을 전송하기 전에 수취인 우편 번호 및 패키지 무게 등의 필수 필드에 데이터가 입력되었는지 확인하십시오. 데이터가 해당 필드에 적합한지 확인하십시오. 트랜잭션 오류를 최소화할 수 있습니다.
- FedEx 시스템의 가용성 및 안정성에 부정적인 영향을 피하는 방법.
- 테스트 또는 프로덕션 환경에서 성능 테스트를 실행하지 마십시오.
- 같은 트랜잭션이 반복해서 실패하는 일이 없도록 코딩 로직을 설정하십시오.
- 스로틀링 한계는 10초 동안 1400개 트랜잭션으로 설정되어 있습니다. 처음 몇 초 안에 이 한계에 도달하면 HTTP 오류 코드 429 Too many requests가 반환되고, 10초에 이를 때까지 트랜잭션이 제한되었다가 이후 다시 트랜잭션이 시작됩니다.
- 서비스 유형, 패키지 유형, 무게 한도 등 발송물에 대한 비즈니스 규칙은 변경될 가능성이 있으므로 하드코드로 포함하지 마십시오.
예: 무게: 45.26, 통화 값/금액: 100.52, 길이: 10, 폭: 25, 높이: 15.
예: “Streetlines”:””
예를 들어, 미국 국내 발송의 경우 상업송장 및 상품 데이터는 국제 발송에만 필요할 수 있으므로 전송하지 마십시오.
예를 들어, 운임 확인이 작동하지 않아도 패키지를 발송할 수 있습니다. 데이터를 사용하기 전 트랜잭션 응답에 누락된 요소는 없는지 평가하십시오.
예를 들어, 미국 우편번호의 경우 필드 값이 모두 숫자이며, 5자리 또는 ZIP+4자리 우편번호 형식인지 확인합니다.
예를 들어, 첫 4초 동안 1400개 요청을 수신하는 경우 HTTP 오류 코드 429 Too many requests - '짧은 시간 동안 너무 많은 요청을 수신했습니다. 잠시 기다렸다가 다시 시도하십시오.'가 반환되고, 다음 6초 동안 트랜잭션이 제한되었다가 그 후에 다시 시작됩니다.
오류 처리
각 API 응답에는 HTTP 상태 코드와 응답 페이로드가 포함됩니다. 일부 응답에는 오류, 경고 또는 메모(해당하는 경우)가 포함됩니다. 경고 및 메모가 실패의 표시는 아니지만 오류 또는 경고 메시지는 로그 및 검토를 거쳐야 합니다. 적절한 오류 처리는 FedEx와의 원활한 통합이 이루어지게 해주고, 파손을 피하는 데 도움이 될 수 있습니다.
HTTP 상태 코드
200 OK
요청이 성공적으로 처리되었습니다. 이는 성공적으로 처리된 HTTP 요청의 표준 응답입니다.
- 참고: 이 API 응답에는 추가 정보를 전달하는 메모와 경고가 포함될 수 있습니다. 이 메시지를 로깅하고 파싱하십시오.
400 Bad request
처리할 수 없는 잘못된 요청을 수신했습니다. 요청을 수정하고 다시 시도하십시오.
- 참고: 오류 코드 및 메시지를 검토하고 요청을 수정한 후 다시 시도하십시오. 메시지는 동적으로 변경될 수 있기 때문에 코드는 오류 코드에만 해당할 뿐, 오류 메시지에는 해당하지 않습니다.
401 Unauthorized
자격 증명을 인증할 수 없습니다. API 키를 교차 확인하고 다시 시도하십시오.
403 Forbidden
자격 증명을 인증할 수 없습니다. 사용 권한을 확인하고 다시 시도하십시오.
404 Not found
요청한 리소스를 더 이상 사용할 수 없습니다. 요청을 수정하고 다시 시도하십시오.
405 Method not allowed
요청한 메서드를 수신했지만 이 메서드는 지원되지 않습니다. 각 엔드포인트에 대해 제공된 메서드만 사용해야 합니다.
예를 들어, 발송을 생성하려면 API 설명서에 나와 있는 대로 POST 메서드를 사용해야 합니다.
409 Conflict
{provide reason of conflict}. 요청을 수정하고 다시 시도하십시오.
415 Unsupported media type
요청에 포함된 콘텐츠 유형을 지원하지 않습니다. 형식을 수정하고 다시 시도하십시오.
422 Processable entity
요청 형식을 인식했지만 해당 항목을 처리할 수 없습니다. 요청을 수정하고 다시 시도하십시오.
429 Too many requests
짧은 시간 동안 너무 많은 요청을 수신했습니다. 트랜잭션 할당량 및 속도 제한을 확인하십시오.
500 Failure
예기치 않은 오류가 발생하여 문제를 해결하는 중입니다. 불편을 끼쳐드려 죄송합니다. 나중에 다시 확인하고, FedEx의 업데이트 소식을 기다리십시오.
503 Service unavailable
서비스를 현재 사용할 수 없으며, 문제를 해결 중입니다. 불편을 끼쳐드려 죄송합니다. 나중에 다시 확인하고, FedEx의 업데이트 소식을 기다리십시오.
요금
- 요금 견적을 알아보는 데에는 두 가지 방법이 있습니다.
- 특정 서비스 유형의 요금 - 표시되는 결과가 serviceType 값으로 필터링됩니다. 회신 크기가 줄고, 트랜잭션 응답 시간이 감소합니다.
예: STANDARD_OVERNIGHT
- 요즘 선택 – serviceType이 표시되지 않는 경우에는 해당하는 모든 서비스와 해당 요금이 반환됩니다.
- 특정 서비스 유형의 요금 - 표시되는 결과가 serviceType 값으로 필터링됩니다. 회신 크기가 줄고, 트랜잭션 응답 시간이 감소합니다.
- 서비스 이용 가능성 API를 사용하여 특정 출발지-도착지 조합에 이용할 수 있는 서비스, 패키지 옵션 및 특별 서비스를 결정하고, 요금 요청에 serviceType 및 패키지 옵션을 전달하십시오.
예를 들어, STANDARD_OVERNIGHT(특히)는 모든 우편 번호 간에 이용할 수 있는 것은 아닙니다.
- 발송에 적용해야 하는 특별 서비스가 있는 경우 특별 서비스의 유형 및 그 세부 정보를 포함해야 합니다.
- 참고: 일부 특별 서비스에는 세부 정보가 없습니다.
- 요금 API 문서를 참고하십시오.
발송
- 서비스 이용 가능성 API를 사용하여 특정 출발지-도착지 조합에 이용할 수 있는 서비스를 결정하고, 발송 요청에 serviceType 및 패키지 옵션을 전달하십시오.
- 발송에 적용해야 하는 특별 서비스가 있는 경우 특별 서비스의 유형 및 그 세부 정보를 포함해야 합니다.
- 참고: 일부 특별 서비스에는 세부 정보가 없습니다.
- 발송물을 픽업하기 전 발송일 종료 시 FedEx Ground 마감을 수행하십시오.
- 발송 API 문서를 참고하십시오.
배송 조회
- 싱글트랙 요청의 배송 조회 번호 개수는 30개로 제한하십시오. 회신 크기가 줄어들고, 트랜잭션 응답 시간이 감소합니다.
- 패키지 배송 조회 횟수는 비즈니스상 필요한 횟수로 제한하십시오.
- 일괄 배송 조회의 경우 배송 조회 상태를 "배송 완료"로 반환한 패키지는 일괄묶음에서 제거하십시오.
- 배송조회 API 문서를 참고하십시오.
주소 확인
- FedEx는 최종 결정이 아닌 제안으로 주소 확인 기능을 제공합니다. 해당 주소를 이용할 수 있을지는 제공된 데이터와 비즈니스상 필요성을 감안하여 최종 사용자가 결정해야 합니다. 주문을 계속 처리할 수 있도록 확인할 수 없는 주소를 해결하기 위한 프로세스가 마련되어 있어야 합니다.
- 더 나은 발송 서비스가 이루어지도록 하려면 주소 확인 같은 옵션 서비스에 발송 프로세스를 의존하지는 마십시오.
- 주소 확인 API 문서를 참고하십시오.
예를 들어, 주문 입력 또는 발송 시 주소 확인 API를 이용할 수 없는 경우에 대비해 발송을 완료하기 위한 비상대응방안이 마련되어 있어야 합니다.
FedEx 접수처 검색
- 특정 속성(예: 접수처 유형, 제공되는 서비스 등)을 제공하여 검색 범위를 좁힘으로써, 적합한 접수처 옵션을 확인하고 응답 시간을 줄이십시오.
- FedEx 접수처 검색 API 문서를 참고하십시오.
픽업 요청
- 픽업 예약 시 이미 지난 준비 시간이나 과거 날짜, 또는 너무 먼 향후 날짜를 입력하지 마십시오.
- 익명 픽업은 허용되지 않습니다.
- 픽업 요청 API 문서를 참고하십시오.
서비스 이용 가능성
- FedEx Express(FDXE), FedEx Ground(FDXG), FedEx Freight(FXFR) 및 FedEx Ground® Economy 등 여러 계열사의 결과를 확인하려면 여러 운송업체 코드를 지정할 수 없으므로 carrierCodes 요소를 생략하거나 별도의 서비스 이용 가능성 요청을 전송하십시오.
- 151파운드 이상의 개별 스키드 및 도합 2,200파운드를 초과하는 스키드에 대해 사전 승인을 받았는지 확인하십시오.
- 가변 옵션으로 SATURDAY_DELIVERY를 지정하면 토요일 배송이 옵션인 모든 서비스에 대해 토요일 배송 옵션과 일반 옵션이 모두 표시됩니다. 특별 서비스에는 SATURDAY_DELIVERY를 지정하지 마십시오. 그럴 경우 해당하는 토요일 배송 옵션만 반환됩니다.
- 서비스 이용 가능성 API 문서를 참고하십시오.
고객 지원
궁금한 점이 있거나 지원이 필요하시면 FedEx가 도와드리겠습니다! 지원 페이지에서 문의 방법 및 리소스에 대해 확인할 수 있습니다.