Làm cách nào để phân trang các yêu cầu API?
Last updated: June 19, 2026
API DISPATCH của L2L giới hạn các yêu cầu GET đến Record Area ở 2000 bản ghi, trừ khi có chỉ định khác. Nếu bạn cần lấy nhiều hơn thì sao? Bài viết này sẽ hướng dẫn bạn cách sử dụng các đối số truy vấn phân trang tích hợp sẵn để truy xuất các bản ghi vượt quá giới hạn được áp dụng.
Các đối số truy vấn phân trang
Có hai đối số truy vấn mà bạn sẽ sử dụng để phân trang: limit và offset.
Đối số limit giới hạn số lượng bản ghi được API trả về. Nếu bạn không chỉ định đối số limit, API sẽ mặc định trả về 100 bản ghi.
Đối số offset cho API biết bản ghi nào cần bắt đầu. Đây là số đếm bắt đầu từ 0, vì vậy trang đầu tiên sẽ có offset=0, và API sẽ trả về các bản ghi từ 0-99. Nếu bạn giới hạn kết quả ở 100 bản ghi mỗi trang, offset cho trang thứ hai sẽ là 100.
Ví dụ
Dưới đây là một tập lệnh ví dụ để truy xuất nhiều bản ghi bằng Python 2.7. Hãy đặc biệt chú ý đến vòng lặp while.
import requests
finished = False
machines = []
url = 'https://example.leading2lean.com/api/1.0/machines/'
apikey = 'fakeapikey'
limit = 2000
site = 1
while not finished:
resp = requests.get(url, {'auth': apikey, 'site': site, 'limit': limit, 'offset': len(machines)}, timeout=60)
if resp.ok:
resp_js = resp.json()
if not resp_js['success']:
raise Exception("api call failed with error: %s" % resp_js['error'])
machines.extend(resp_js['data'])
if len(resp_js['data']) < limit:
finished = True
else:
raise Exception("Failed request, error: %d" % resp.status_code)Phương pháp thay thế để phân trang các yêu cầu API
Thông thường, bạn có thể cần lấy dữ liệu từ L2L nơi dữ liệu mới được thêm vào thường xuyên. Ví dụ: các Điều phối được thêm nhiều lần mỗi giờ. Bạn có thể sử dụng quy trình sau để lấy dữ liệu từ những khu vực thường xuyên thay đổi:
Bước 1: Xây dựng URL. URL này nên sử dụng một trong các tham số sắp xếp đặc biệt để giới hạn lượng dữ liệu bạn trả về. Trong ví dụ này, tôi muốn lấy danh sách các Điều phối được tạo trong tuần vừa qua:
https://[customer].leading2lean.com/api/1.0/dispatches?auth=[auth]&site=1&created__gt=[one week ago]&order_by=-idNhư bạn có thể thấy, các kết quả được sắp xếp theo id, theo thứ tự giảm dần.
Bước 2: Thêm một tham số sắp xếp đặc biệt mới. Vì tôi đang sắp xếp theo id, tôi sẽ lấy id từ kết quả cuối cùng và nối nó vào URL như sau:
https://[customer].leading2lean.com/api/1.0/dispatches?auth=[auth]&site=1&created__gt=[one week ago]&order_by=-id&id__gt=[last id]Bước 3: Tiếp tục cho đến khi bạn nhận được 0 kết quả. Khi kết quả từ L2L trống, bạn đã truy xuất tất cả bản ghi mà không có khoảng trống.
Mẹo
- Chúng tôi khuyến nghị bạn viết mã chỉ để truy xuất các bản ghi từ API mà bạn cần. Bạn có thể thực hiện việc này bằng cách sử dụng các bộ lọc bổ sung trong các yêu cầu API và giới hạn tổng số bản ghi ở mức hợp lý. Nếu bạn không lọc và giới hạn các truy vấn API, máy chủ web của bạn có thể bị chậm trong suốt thời gian ứng dụng chạy. Vui lòng thận trọng.
- Khi bạn đến cuối tập dữ liệu, bạn sẽ nhận được phản hồi với đối tượng
datatrống, như sau:
Khi nhận được đối tượng data trống, bạn nên kết thúc vòng lặp.{ limit: 100, data: [], success: true, offset: 1000 }