Skip to main content

2.1 ภาพรวมทั่วไป

2.1.1 ที่อยู่สำหรับเข้าถึง

สภาพแวดล้อมทดสอบ
สภาพแวดล้อมจริงhttps://api.racent.com/

2.1.2 การยืนยันตัวตนด้วยลายเซ็นของอินเทอร์เฟซ

อินเทอร์เฟซใช้กลไกการยืนยันตัวตนด้วยลายเซ็น API เพื่อรับรองความครบถ้วนและความปลอดภัยของคำขอ ทุกครั้งที่เรียกใช้อินเทอร์เฟซ จะต้องแนบพารามิเตอร์ลายเซ็นมาด้วย และฝั่งเซิร์ฟเวอร์จะตรวจสอบความถูกต้องของลายเซ็น

พารามิเตอร์สาธารณะ

พารามิเตอร์ต่อไปนี้ ต้อง รวมอยู่ใน Query String ของคำขออินเทอร์เฟซทุกครั้ง:

ชื่อพารามิเตอร์ประเภทพารามิเตอร์คำอธิบายค่าตัวอย่าง
access_keyStringรหัสบัญชี ใช้ระบุตัวตนของผู้เรียกใช้1000000059
signature_nonceStringตัวเลขสุ่มเฉพาะสำหรับลายเซ็น ใช้ป้องกันการโจมตีแบบเล่นซ้ำ
แต่ละคำขอต้องใช้ค่าสุ่มที่แตกต่างกัน
2206561-6450-430e-8b0a-26980754c0de
timestampStringเวลาที่ส่งคำขอ (หน่วย: วินาที)1673418729
signature_versionStringเวอร์ชันอัลกอริทึมลายเซ็น กำหนดเป็น 1.01.0
signature_methodStringอัลกอริทึมลายเซ็น กำหนดเป็น md5md5
signatureStringค่าลายเซ็นของคำขอนี้ คำนวณจากพารามิเตอร์อื่นและคีย์ลับ85ef54421c69edeb098c7b557c6c5cd5
คำอธิบาย:
  • access_key และ AccessSecret (คีย์ลับ) สามารถขอรับได้หลังจากเข้าสู่ระบบ จาก การจัดการอินเทอร์เฟซ - ข้อมูลรับรองการเข้าถึง API
  • signature_nonce ขอแนะนำให้ใช้ UUID หรือสตริงสุ่มที่เพียงพอ เพื่อรับประกันว่าคำขอแต่ละครั้งไม่ซ้ำกัน
  • timestamp คำขอที่มีเวลาต่างจากเวลาเซิร์ฟเวอร์เกินช่วงที่กำหนด (เช่น 5 นาที) จะถูกปฏิเสธ :::

กลไกการลงนาม

ขั้นตอนที่ 1: สร้างสตริงคำขอแบบมาตรฐาน

1.การจัดเรียงพารามิเตอร์

จัดเรียงพารามิเตอร์สาธารณะทั้งหมด (ยกเว้น signature) และพารามิเตอร์ที่อินเทอร์เฟซกำหนดเองตามลำดับพจนานุกรมจากน้อยไปมากของชื่อพารามิเตอร์

2.การเข้ารหัสพารามิเตอร์

ใช้การเข้ารหัส UTF-8 กับชื่อและค่าของแต่ละพารามิเตอร์ และทำ URL encoding ตามกฎ RFC3986:

  • อักขระที่ไม่ต้องเข้ารหัส: 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 คือสตริง JSON ดิบของ Body คำขอ (ต้องลบช่องว่างและขึ้นบรรทัดใหม่ และฟิลด์ต้องเรียงลำดับ)
  • เครื่องหมาย + ในสูตรหมายถึงการต่อสตริง ไม่ได้ใช้ในการคำนวณ

กฎการเข้ารหัสพารามิเตอร์ (RFC3986)

ประเภทอักขระวิธีจัดการตัวอย่าง
A-Z, a-z, 0-9, -, _, ., ~ไม่เข้ารหัสabc123abc123
ช่องว่างเข้ารหัสเป็น %20a ba%20b
อักขระ ASCII อื่น ๆเข้ารหัสเป็น %XX (เลขฐานสิบหก)"%22

ตัวอย่างคำขอ GET

สมมติว่า:

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

ขั้นตอนที่ 1: สร้าง stringToSign

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

ขั้นตอนที่ 2: คำนวณลายเซ็น

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&timestamp=1755597512&signature_version=1.0&signature_method=md5&signature=a33bdb81ea79eb4ebbac9da043309c00

ตัวอย่างคำขอ POST (พร้อม Body)

สมมติว่า Body คือ:

{"domain":"example.com"}

ค่า MD5 คือ: 640c69595341436be9b0d1516d3d37ac

ขั้นตอนที่ 1: สร้าง stringToSign

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

ขั้นตอนที่ 2: คำนวณลายเซ็น

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&timestamp=1755598851&signature_version=1.0&signature_method=md5&signature=29487fd8ae5b828415d05b691caf015c

2.1.3 การจำกัดความถี่ของอินเทอร์เฟซ

กฎการจำกัดความถี่เริ่มต้น สำหรับผู้ใช้รายเดียวกันที่เรียกใช้อินเทอร์เฟซเดียวกัน จำกัดจำนวนครั้งดังนี้:

  • 60 ครั้งต่อนาที
  • 500 ครั้งต่อชั่วโมง
  • 1000 ครั้งต่อวัน

2.1.4 พารามิเตอร์ตอบกลับของอินเทอร์เฟซ

คำอธิบายพารามิเตอร์

ชื่อพารามิเตอร์ประเภทพารามิเตอร์คำอธิบายตัวอย่างค่า
dataObjectข้อมูลธุรกิจ หากอินเทอร์เฟซแจ้งข้อผิดพลาด ค่าที่ส่งกลับจะเป็น null
codeIntรหัสข้อผิดพลาด สำเร็จส่งกลับ 0 แจ้งข้อผิดพลาดส่งกลับรหัสข้อผิดพลาดที่เกี่ยวข้อง010001001
messageStringข้อมูลอธิบายข้อผิดพลาด อินเทอร์เฟซสำเร็จส่งกลับ "Success"over-rate-limit
errorsObjectข้อผิดพลาดบางกรณี จะให้คำอธิบายข้อผิดพลาดที่เฉพาะเจาะจงมากขึ้นผ่านฟิลด์นี้
request_idStringID คำขอ ใช้สำหรับช่วยในการตรวจสอบปัญหาเป็นหลัก039ecdca-44d5-430f-8521-020f4953bcc5