Ví dụ về yêu cầu REST API sử dụng bash

Cập nhật lần cuối: 31 thg 3, 2025

Giới thiệu

Việc triển khai giao diện Kraken REST API bằng cách sử dụng Bourne Again shell (bash) và một số lệnh liên quan (openssl, base64, xxd, v.v.) có thể là một giải pháp tiện lợi và hiệu quả để tương tác với các thị trường của Kraken (mặc dù nó sẽ không phải là cách triển khai nhanh nhất so với mã được biên dịch).

Bash và các lệnh cần thiết có sẵn (được cài đặt sẵn) trên hầu hết các hệ thống UNIX, Linux và macOS, và có thể dễ dàng cài đặt trên Windows và các hệ thống khác, vì vậy tất cả phần mềm cần thiết đều có sẵn mà không cần sử dụng bất kỳ công cụ hoặc thư viện API của bên thứ ba nào khác.

Sử dụng một trình soạn thảo văn bản thuần túy (ngay cả một trình soạn thảo kiểu cũ như vi) và một vài dòng mã, có thể truy cập cả dữ liệu thị trường công khai và dữ liệu tài khoản riêng tư, cũng như đặt/hủy lệnh trên các thị trường của Kraken.

Mã ví dụ

Đoạn mã sau đây cho thấy cách triển khai mã bash để gọi điểm cuối Balance của REST API:

#!/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

và mã tương ứng cũng có thể được tải xuống (dưới dạng tệp kapi_bash.sh).

Sử dụng/Phát triển thêm

Để truy xuất số dư tài khoản của riêng bạn, khóa API ví dụ nên được thay thế bằng khóa API từ tài khoản Kraken của riêng bạn, và các điểm cuối API bổ sung có thể được bật đơn giản bằng cách sửa đổi biến api_endpoint và biến api_post (nếu cần).

Bạn cần thêm trợ giúp?