2.1 Genel Açıklama
2.1.1 Erişim Adresi
| Test Ortamı | |
|---|---|
| Gerçek Ortam | https://api.racent.com/ |
2.1.2 Arayüz İmza Kimlik Doğrulaması
Arayüz, API imzasına dayalı bir kimlik doğrulama mekanizması kullanır; bu, isteğin bütünlüğünü ve güvenliğini sağlar. Arayüz her çağrıldığında imza parametresi taşınmalıdır; sunucu imzanın doğruluğunu doğrular.
Genel Parametreler
Aşağıdaki parametreler, her arayüz isteğinde Query String içinde mutlaka yer almalıdır:
| Parametre Adı | Parametre Türü | Açıklama | Örnek Değer |
|---|---|---|---|
| access_key | String | Hesap kimliği; çağıran tarafın kimliğini belirtir | 1000000059 |
| signature_nonce | String | İmza için benzersiz rastgele sayı; tekrar saldırılarını önlemek amacıyla kullanılır, her istekte farklı rastgele değer kullanılmalıdır | 2206561-6450-430e-8b0a-26980754c0de |
| timestamp | String | İsteğin başlatıldığı zaman damgası (saniye cinsinden) | 1673418729 |
| signature_version | String | İmza algoritması sürümü; sabit olarak 1.0'dır | 1.0 |
| signature_method | String | İmza algoritması; sabit olarak md5'tir | md5 |
| signature | String | Bu isteğin imza değeri; diğer parametrelerden ve anahtardan hesaplanır | 85ef54421c69edeb098c7b557c6c5cd5 |
access_keyveAccessSecret(anahtar), oturum açtıktan sonra Arayüz Yönetimi-API Erişim Kimlik Bilgileri bölümünden edinilebilir.
signature_nonceUUID veya yeterince rastgele bir dize kullanılması önerilir; her istekte benzersiz olduğundan emin olun.timestampSunucu saatiyle belirli bir aralıktan (ör. 5 dakika) daha fazla fark olan istekler reddedilir. :::
İmza Mekanizması
Birinci Adım: Standartlaştırılmış İstek Dizesini Oluşturma
1. Parametre Sıralama
Tüm ortak parametreleri (signature hariç) ve arayüze özel parametreleri parametre adına göre sözlük sırasına göre artan şekilde sıralayın.
2. Parametre Kodlama
Her parametrenin adını ve değerini UTF-8 ile kodlayın ve RFC3986 kurallarına göre URL kodlaması uygulayın:
- Kodlanmayan karakterler:
A-Z a-z 0-9 - _ . ~ - Diğer karakterler (ör.
boşluk,/,?,=vb.) %XX biçiminde kodlanmalıdır; örneğin boşluk%20olarak kodlanır.
3. Parametreleri Birleştirme
- Kodlanmış parametre adı ile parametre değerini = ile bağlayın.
- Tüm parametre çiftlerini & ile bağlayın ve sözlük sırasını koruyun.
Sonuçta elde edilen dizeye stringToSign adı verilir.
İkinci Adım: İmza Dizesini Oluşturma ve İmzayı Hesaplama
İstek türüne göre imza hesaplama yöntemi aşağıdaki gibidir:
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ))
signature = md5(AccessSecret + md5( HTTPMethod + stringToSign ) + md5( jsonStringToBody ))
- HTTPMethod büyük harf olmalıdır; örneğin GET, POST
- jsonStringToBody, istek Body'sinin ham JSON dizesidir (boşluklar ve satır sonları kaldırılmalı ve alanlar sıralanmalıdır)
- Formüldeki +, dize birleştirmeyi ifade eder ve hesaplamaya katılmaz
Parametre Kodlama Kuralları (RFC3986)
| Karakter Türü | İşleme Yöntemi | Örnek |
|---|---|---|
A-Z, a-z, 0-9, -, _, ., ~ | Kodlanmaz | abc123 → abc123 |
| Boşluk | %20 olarak kodlanır | a b → a%20b |
Diğer ASCII karakterler | %XX (onaltılık) olarak kodlanır | " → %22 |
GET İstek Örneği
Varsayalım:
- access_key = "1000000059"
- AccessSecret = "19938c89c13ddf5da7636333a5aa4c0e"
- signature_nonce = "iobzx72w63"
- timestamp = "1755597512"
Adım1: stringToSign oluşturma
access_key=1000000059&signature_method=md5&signature_nonce=iobzx72w63&signature_version=1.0×tamp=1755597512
Adım 2: İmzayı hesaplayın
temp = md5("GET" + stringToSign) // 结果为"9bc92e0f3e239dc628ebc416294422ba"
signature = md5(AccessSecret + temp) // 结果为"a33bdb81ea79eb4ebbac9da043309c00"
Nihai istek URL'si:
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 İstek Örneği (Body ile)
Body'nin şu olduğunu varsayalım:
{"domain":"example.com"}
MD5 değeri: 640c69595341436be9b0d1516d3d37ac
Adım 1: stringToSign oluşturma
access_key=1000000059&signature_method=md5&signature_nonce=abjipo5ar5a&signature_version=1.0×tamp=1755598851
Adım 2: İmzayı hesaplayın
temp = md5("POST" + stringToSign) // 结果为 "5aba63e4af1b7a4080eaf47d0fc56efe"
signature = md5(AccessSecret + temp + "640c69595341436be9b0d1516d3d37ac") // 结果为 "29487fd8ae5b828415d05b691caf015c"
Nihai İstek URL'si:
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 Arayüz Hız Sınırlandırma
Varsayılan hız sınırlandırma kurallarına göre, aynı kullanıcının aynı arayüze erişim limitleri şu şekildedir:
- Dakikada 60 istek
- Saatte 500 istek
- Günde 1000 istek
2.1.4 Arayüz Dönüş Parametreleri
Parametre Açıklaması
| Parametre Adı | Parametre Türü | Açıklama | Örnek Değer |
|---|---|---|---|
| data | Object | İş verisi; arayüz hata döndürürse değer null olur | |
| code | Int | Hata kodu; başarılı olursa 0, hata olursa ilgili hata kodu döner | 0, 1000, 1001 |
| message | String | Hata açıklama bilgisi; arayüz başarılı olursa "Success" döner | over-rate-limit |
| errors | Object | Bazı hatalarda bu alan aracılığıyla daha ayrıntılı hata açıklaması sağlanır | |
| request_id | String | İstek kimliği; esas olarak sorun gidermeye yardımcı olmak için kullanılır | 039ecdca-44d5-430f-8521-020f4953bcc5 |