Saltar al contenido principal

2.1 Descripción general

2.1.1 Dirección de acceso

Entorno de pruebas
Entorno realhttps://api.racent.com/

2.1.2 Autenticación de firma de interfaz

La interfaz utiliza un mecanismo de autenticación de identidad basado en la firma de API, lo que garantiza la integridad y seguridad de la solicitud. Cada vez que se llama a la interfaz, se deben incluir los parámetros de firma, y el servidor verificará su validez.

Parámetros públicos

Los siguientes parámetros deben incluirse en el Query String de cada solicitud a la interfaz:

Nombre del parámetroTipo del parámetroDescripciónValor de ejemplo
access_keyStringID de cuenta, utilizado para identificar al llamador1000000059
signature_nonceStringNúmero aleatorio único de firma, utilizado para prevenir ataques de repetición,
cada solicitud debe usar un valor aleatorio diferente
2206561-6450-430e-8b0a-26980754c0de
timestampStringMarca de tiempo de inicio de la solicitud (en segundos)1673418729
signature_versionStringVersión del algoritmo de firma, fijo como 1.01.0
signature_methodStringAlgoritmo de firma, fijo como md5md5
signatureStringValor de firma de esta solicitud, calculado a partir de otros parámetros y la clave85ef54421c69edeb098c7b557c6c5cd5
Nota:
  • access_key y AccessSecret (clave) se pueden obtener después de iniciar sesión en Gestión de interfaces - Credenciales de acceso API.
  • signature_nonce Se recomienda usar un UUID o una cadena suficientemente aleatoria, garantizando que sea única en cada solicitud.
  • timestamp Las solicitudes cuya diferencia con la hora del servidor supere un rango determinado (por ejemplo, 5 minutos) serán rechazadas. :::

Mecanismo de firma

Primer paso: construir la cadena de solicitud normalizada

1. Ordenamiento de parámetros

Ordene todos los parámetros públicos (excepto signature) y los parámetros personalizados de la interfaz en orden lexicográfico ascendente por nombre de parámetro.

2. Codificación de parámetros

Codifique el nombre y el valor de cada parámetro en UTF-8 y realice la codificación URL siguiendo las reglas de RFC3986:

  • Caracteres que no se codifican: A-Z a-z 0-9 - _ . ~
  • Otros caracteres (como espacio, /, ?, =, etc.) deben codificarse en formato %XX; por ejemplo, el espacio se codifica como %20.
3. Concatenación de parámetros
  • Use = para unir el nombre y el valor del parámetro ya codificados.
  • Use & para unir todos los pares de parámetros, manteniendo el orden lexicográfico.

La cadena final obtenida se denomina stringToSign.


Segundo paso: construir la cadena de firma y calcular la firma

Según el tipo de solicitud, el cálculo de la firma se realiza de la siguiente manera:

GET 请求
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
POST / PUT 请求(含 Body 参数)
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
Nota:
  • HTTPMethod debe estar en mayúsculas, por ejemplo GET, POST
  • jsonStringToBody es la cadena JSON original del Body de la solicitud (se deben eliminar espacios y saltos de línea, y los campos deben ordenarse)
  • El signo + en la fórmula indica concatenación de cadenas y no participa en cálculos

Reglas de codificación de parámetros (RFC3986)

Tipo de carácterMétodo de procesamientoEjemplo
A-Z, a-z, 0-9, -, _, ., ~Sin codificarabc123abc123
EspacioSe codifica como %20a ba%20b
Otros caracteres ASCIISe codifican como %XX (hexadecimal)"%22

Ejemplo de solicitud GET

Supongamos:

  • access_key = "1000000059"
  • AccessSecret = "19938c89c13ddf5da7636333a5aa4c0e"
  • signature_nonce = "iobzx72w63"
  • timestamp = "1755597512"

Paso 1: Construir stringToSign

access_key=1000000059&signature_method=md5&signature_nonce=iobzx72w63&signature_version=1.0&timestamp=1755597512

Paso 2: Calcular la firma

temp = md5("GET" + stringToSign)  // 结果为"9bc92e0f3e239dc628ebc416294422ba"
signature = md5(AccessSecret + temp) // 结果为"a33bdb81ea79eb4ebbac9da043309c00"

URL de solicitud final:

https://api.racent.com/api/v1/domain/tld?access_key=1000000059&signature_nonce=iobzx72w63&timestamp=1755597512&signature_version=1.0&signature_method=md5&signature=a33bdb81ea79eb4ebbac9da043309c00

Ejemplo de solicitud POST (con Body)

Supongamos que el Body es:

{"domain":"example.com"}

Su valor MD5 es: 640c69595341436be9b0d1516d3d37ac

Paso 1: Construir stringToSign

access_key=1000000059&signature_method=md5&signature_nonce=abjipo5ar5a&signature_version=1.0&timestamp=1755598851

Paso 2: Calcular la firma

temp = md5("POST" + stringToSign)  // 结果为 "5aba63e4af1b7a4080eaf47d0fc56efe"
signature = md5(AccessSecret + temp + "640c69595341436be9b0d1516d3d37ac") // 结果为 "29487fd8ae5b828415d05b691caf015c"

URL de solicitud final:

https://api.racent.com/v1/domain/query-domain?access_key=1000000059&signature_nonce=abjipo5ar5a&timestamp=1755598851&signature_version=1.0&signature_method=md5&signature=29487fd8ae5b828415d05b691caf015c

2.1.3 Limitación de frecuencia de la interfaz

Reglas de limitación predeterminadas: para el mismo usuario que accede a la misma interfaz, los límites son los siguientes:

  • 60 veces por minuto
  • 500 veces por hora
  • 1000 veces por día

2.1.4 Parámetros de retorno de la interfaz

Descripción de parámetros

Nombre del parámetroTipo de parámetroDescripciónValor de ejemplo
dataObjectDatos de negocio; si la interfaz reporta un error, el valor devuelto es null
codeIntCódigo de error; devuelve 0 en caso de éxito y el código de error correspondiente en caso de fallo010001001
messageStringInformación de error; la interfaz devuelve "Success" en caso de éxitoover-rate-limit
errorsObjectPara algunos errores, se proporciona una descripción más específica a través de este campo
request_idStringID de solicitud, utilizado principalmente para ayudar a resolver problemas039ecdca-44d5-430f-8521-020f4953bcc5