Bỏ qua để đến nội dung

Phân trang

~2 phút đọc

Mọi route trả danh sách dùng chung một dạng phân trang bằng cursor. Bạn không đánh số trang: mỗi phản hồi cho biết có còn dữ liệu không và đưa sẵn cursor của trang kế tiếp.

{
"object": "list",
"data": [],
"next_cursor": "cur_eyJ2IjoxfQ.AAAAAAAAAAAAAAAAAAAAAA",
"has_more": true
}
TrườngÝ nghĩa
dataCác phần tử của trang này, mới nhất trước với danh sách giao dịch.
next_cursorCursor của trang kế; null khi hết dữ liệu.
has_moretrue nếu còn trang kế.

Tham số yêu cầu: limit từ 1 đến 100 (mặc định 20) và cursor lấy từ next_cursor của lần trước. Lặp lại cho tới khi has_more là false.

SDK có sẵn bộ lặp paginate đi qua mọi phần tử của mọi trang.

import { createClient } from "@dongtien/sdk";
const dt = createClient({ apiKey: process.env.DT_API_KEY! });
for await (const tx of dt.paginate("/v1/transactions", { params: { query: { direction: "in" } } })) {
console.log(tx.id, tx.amount);
}

Nếu tự viết vòng lặp, giữ nguyên mọi tham số lọc giữa các trang và chỉ thay cursor.

Cursor có dạng cur_…. Hãy coi nó là một giá trị không đọc được: đừng phân tích, tự tạo hay chỉnh sửa.

  • Cursor của danh sách gắn với bộ lọc đã tạo ra nó. Dùng cursor với bộ lọc khác nhận 400 invalid_cursor.
  • Sửa một ký tự bất kỳ trong cursor cũng nhận 400 invalid_cursor; API không tiết lộ lý do chi tiết.

Route GET /v1/transactions/sync dành cho việc giữ một bản sao giao dịch ở hệ thống của bạn. Cursor của nó mang vị trí theo từng tài khoản, nên bạn lưu cursor cuối cùng và dùng lại ở lần đồng bộ sau để chỉ nhận thay đổi mới. Cursor này có giới hạn riêng: tối đa 4096 ký tự và tối đa 100 tài khoản; vượt giới hạn nhận 422 too_many_accounts hoặc 400 invalid_cursor.