ตัวอย่างคำขอ REST API โดยใช้ bash

อัปเดตล่าสุด: 31 มีนาคม 2568

บทนำ

การนำอินเทอร์เฟซ Kraken REST API มาใช้โดยใช้ Bourne Again shell (bash) และคำสั่งที่เกี่ยวข้องบางอย่าง (openssl, base64, xxd ฯลฯ) สามารถเป็นโซลูชันที่สะดวกและมีประสิทธิภาพสำหรับการโต้ตอบกับตลาดของ Kraken (แม้ว่าจะไม่ใช่การใช้งานที่เร็วที่สุดเมื่อเทียบกับโค้ดที่คอมไพล์แล้วก็ตาม)

Bash และคำสั่งที่จำเป็นมีให้ใช้งาน (ติดตั้งล่วงหน้า) บนระบบ UNIX, Linux และ macOS ส่วนใหญ่ และสามารถติดตั้งบน Windows และระบบอื่นๆ ได้อย่างง่ายดาย ดังนั้นซอฟต์แวร์ที่จำเป็นทั้งหมดจึงพร้อมใช้งานโดยไม่ต้องใช้เครื่องมือหรือไลบรารี API ของบุคคลที่สามเพิ่มเติมใดๆ

การใช้โปรแกรมแก้ไขข้อความธรรมดา (แม้แต่โปรแกรมแก้ไขแบบเก่า เช่น vi) และโค้ดเพียงไม่กี่บรรทัด ก็สามารถเข้าถึงข้อมูลตลาดสาธารณะและข้อมูลบัญชีส่วนตัวได้ และยังสามารถวาง/ยกเลิกคำสั่งซื้อในตลาดของ Kraken ได้อีกด้วย

ตัวอย่างโค้ด

โค้ดต่อไปนี้แสดงการใช้งานโค้ด bash สำหรับเรียกใช้ REST API Balance endpoint:

#!/usr/bin/env bash

# API public/private keys copied from account management web site

api_key='gxTXpC4Ag/N0QPKlYnRhL1qVB2G/HZV1eB2drl7eOXga30dEKoB+EUMs'
api_private='62kRfRX7BI8G8T/jl7clnZ+vSfJt7YmQN23JQkJfHCE6oxecJX4fN4i2RitmRhyFzfJ4efKy2yCo4H068rfv0A=='

# API variables (URL, endpoint, nonce, etc.)

api_host='https://api.kraken.com'
api_endpoint='/0/private/Balance'
api_nonce=`date +%s`
api_post="nonce=$api_nonce"

# Authentication algorithm (SHA256 and HMAC SHA512)

api_private_hex=`echo -n $api_private base64 -d xxd -p tr -d "\n"`
echo -n $api_endpoint > kapi_bash.bin
echo -n $api_nonce$api_post openssl dgst -sha256 -binary >> kapi_bash.bin
api_sign=`cat kapi_bash.bin openssl dgst -binary -sha512 -mac HMAC -macopt hexkey:$api_private_hex base64`

# HTTP request (POST)

curl --header "API-Key: $api_key" --header "API-Sign: $api_sign" --data $api_post $api_host$api_endpoint

และโค้ดที่ตรงกันยังสามารถ ดาวน์โหลดได้ (เป็นไฟล์ kapi_bash.sh)

การใช้งาน/การพัฒนาเพิ่มเติม

หากต้องการเรียกดูยอดคงเหลือในบัญชีของคุณเอง คีย์ API ตัวอย่างควรถูกแทนที่ด้วยคีย์ API จากบัญชี Kraken ของคุณเอง และสามารถเปิดใช้งาน API endpoint เพิ่มเติมได้ง่ายๆ โดยการแก้ไขตัวแปร api_endpoint และตัวแปร api_post (หากจำเป็น)

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่