2.1 전반적인 설명
2.1.1 접속 주소
| 테스트 환경 | |
|---|---|
| 실제 환경 | https://api.racent.com/ |
2.1.2 인터페이스 서명 인증
인터페이스는 API 서명 기반의 신원 인증 메커니즘을 사용하여 요청의 무결성과 보안성을 보장합니다. 인터페이스를 호출할 때마다 서명 매개변수를 반드시 전달해야 하며, 서버는 서명의 정확성을 검증합니다.
공통 매개변수
다음 매개변수는 반드시 매 인터페이스 요청의 Query String에 포함되어야 합니다:
| 매개변수 이름 | 매개변수 유형 | 설명 | 예시 값 |
|---|---|---|---|
| access_key | String | 호출자 신원을 식별하는 데 사용되는 계정 ID | 1000000059 |
| signature_nonce | String | 재전송 공격을 방지하기 위한 서명 고유 난수로, 매 요청마다 서로 다른 난수 값을 사용해야 합니다 | 2206561-6450-430e-8b0a-26980754c0de |
| timestamp | String | 요청이 시작된 타임스탬프(단위: 초) | 1673418729 |
| signature_version | String | 서명 알고리즘 버전으로, 1.0으로 고정됨 | 1.0 |
| signature_method | String | 서명 알고리즘으로, md5로 고정됨 | md5 |
| signature | String | 다른 매개변수와 비밀 키로 계산된 이번 요청의 서명 값 | 85ef54421c69edeb098c7b557c6c5cd5 |
설명:
access_key및AccessSecret(비밀 키)는 로그인 후 인터페이스 관리-API 접근 자격 증명에서 확인할 수 있습니다.signature_nonce는 요청마다 고유하도록 UUID 또는 충분히 무작위적인 문자열을 사용할 것을 권장합니다.timestamp는 서버 시간과의 차이가 일정 범위(예: 5분)를 초과하는 요청은 거부됩니다.
서명 메커니즘
1단계: 정규화된 요청 문자열 구성
1. 파라미터 정렬
모든 공개 파라미터(signature 제외)와 인터페이스 사용자 정의 파라미터를 파라미터명 사전순 오름차순으로 정렬합니다.
2. 파라미터 인코딩
각 파라미터의 이름과 값에 UTF-8 인코딩을 사용하고, RFC3986 규칙에 따라 URL 인코딩을 진행합니다:
- 인코딩하지 않는 문자:
A-Z a-z 0-9 - _ . ~ - 기타 문자(예:
공백,/,?,=등)는 %XX 형식으로 인코딩해야 하며, 예를 들어 공백은%20로 인코딩됩니다.
3. 파라미터 연결
- 인코딩된 파라미터명과 파라미터값을 =로 연결합니다
- 모든 파라미터 쌍을 &로 연결하며 사전순을 유지합니다
최종적으로 생성된 문자열을 stringToSign이라고 부릅니다.
2단계: 서명 문자열을 구성하고 서명 계산
요청 유형에 따라 서명 계산 방식은 다음과 같습니다:
GET 请求
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
POST / PUT 请求(含 Body 参数)
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
설명:
- HTTPMethod는 반드시 대문자로 작성해야 합니다(예: GET, POST).
- jsonStringToBody는 요청 Body의 원본 JSON 문자열입니다(공백과 줄바꿈을 제거하고 필드를 정렬해야 합니다).
- 공식의 +는 문자열 연결을 의미하며, 연산에 사용되지 않습니다.
매개변수 인코딩 규칙(RFC3986)
| 문자 유형 | 처리 방식 | 예시 |
|---|---|---|
A-Z, a-z, 0-9, -, _, ., ~ | 인코딩 안 함 | abc123 → abc123 |
| 공백 | %20로 인코딩 | a b → a%20b |
기타 ASCII 문자 | %XX(16진수)로 인코딩 | " → %22 |
GET 요청 예시
가정:
- access_key = "1000000059"
- AccessSecret = "19938c89c13ddf5da7636333a5aa4c0e"
- signature_nonce = "iobzx72w63"
- timestamp = "1755597512"
Step1: stringToSign 구성
access_key=1000000059&signature_method=md5&signature_nonce=iobzx72w63&signature_version=1.0×tamp=1755597512
Step2: 서명 계산
temp = md5("GET" + stringToSign) // 结果为"9bc92e0f3e239dc628ebc416294422ba"
signature = md5(AccessSecret + temp) // 结果为"a33bdb81ea79eb4ebbac9da043309c00"
최종 요청 URL:
https://api.racent.com/api/v1/domain/tld?access_key=1000000059&signature_nonce=iobzx72w63×tamp=1755597512&signature_version=1.0&signature_method=md5&signature=a33bdb81ea79eb4ebbac9da043309c00
POST 요청 예시(Body 포함)
Body가 다음과 같다고 가정합니다:
{"domain":"example.com"}
해당 MD5 값은 다음과 같습니다: 640c69595341436be9b0d1516d3d37ac
Step1: stringToSign 구성
access_key=1000000059&signature_method=md5&signature_nonce=abjipo5ar5a&signature_version=1.0×tamp=1755598851
Step2: 서명 계산
temp = md5("POST" + stringToSign) // 结果为 "5aba63e4af1b7a4080eaf47d0fc56efe"
signature = md5(AccessSecret + temp + "640c69595341436be9b0d1516d3d37ac") // 结果为 "29487fd8ae5b828415d05b691caf015c"
최종 요청 URL:
https://api.racent.com/v1/domain/query-domain?access_key=1000000059&signature_nonce=abjipo5ar5a×tamp=1755598851&signature_version=1.0&signature_method=md5&signature=29487fd8ae5b828415d05b691caf015c
2.1.3 인터페이스 속도 제한
기본 속도 제한 규칙은 동일한 사용자가 동일한 인터페이스에 접근할 때 다음과 같이 호출 횟수를 제한합니다:
- 분당 60회
- 시간당 500회
- 일일 1000회
2.1.4 인터페이스 반환 매개변수
매개변수 설명
| 매개변수 이름 | 매개변수 타입 | 설명 | 예시 값 |
|---|---|---|---|
| data | Object | 비즈니스 데이터로, 인터페이스 오류 발생 시 반환값은 null입니다 | |
| code | Int | 오류 코드로, 성공 시 0을 반환하고 오류 발생 시 해당 오류 코드를 반환합니다 | 0,1000,1001 |
| message | String | 오류 설명 메시지로, 인터페이스 성공 시 "Success"를 반환합니다 | over-rate-limit |
| errors | Object | 일부 오류의 경우 이 필드를 통해 더 구체적인 오류 설명을 제공합니다 | |
| request_id | String | 요청 ID로, 주로 문제 해결 지원에 사용됩니다 | 039ecdca-44d5-430f-8521-020f4953bcc5 |