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

Lỗi

Tìm hiểu cấu trúc phản hồi lỗi mà BoxHero API trả về và cách xử lý lỗi trong mã của bạn.

Khi yêu cầu thất bại, BoxHero API phản hồi bằng mã trạng thái lỗi HTTP và một cấu trúc phản hồi lỗi JSON duy nhất:

{
"id": "ex_8f5c0c8e0e0a4a3c9b3f4f2c4f6c8d2a",
"type": "/errors/not-found",
"title": "No item with id 12345 found in this team.",
"correlationID": "rq_01abf3c2b8e44a59be2a9c0f1e7d6a40",
"instance": "/items/12345"
}
TrườngMô tả
idID duy nhất của lỗi: ex_ theo sau là 32 ký tự thập lục phân viết thường. Hãy cung cấp ID này khi liên hệ bộ phận hỗ trợ.
typeMã lỗi ổn định, máy có thể đọc được. Hãy rẽ nhánh trong mã dựa trên trường này, không dựa trên title.
titleTóm tắt dễ đọc cho con người, bằng tiếng Anh. Nội dung câu chữ có thể thay đổi.
correlationIDID của yêu cầu: rq_ theo sau là 32 ký tự thập lục phân viết thường, giống với header phản hồi X-Correlation-Id. Chúng tôi dùng nó để tìm yêu cầu của bạn trong log.
instanceTài nguyên bị lỗi, ví dụ /items/12345. Đường dẫn không có tiền tố /v1.
codeLý do chi tiết của lỗi, ví dụ tx-modify-revision-mismatch. Không phải lúc nào cũng có. Hãy rẽ nhánh theo type trước, sau đó theo code để xử lý chi tiết hơn.
errorsChi tiết theo từng trường, có trong các phản hồi /errors/invalid-request (400). Mỗi mục có path chỉ ra trường không hợp lệ và message dễ đọc cho con người.

Một số lỗi còn kèm id của tài nguyên liên quan, chẳng hạn item_id hoặc order_id, dưới dạng các trường bổ sung ở cấp cao nhất.

Trạng tháiÝ nghĩaCách xử lý
400Yêu cầu không hợp lệ, hoặc chế độ của nhóm không hỗ trợ endpoint nàySửa yêu cầu — errors liệt kê các trường không hợp lệ. Không thử lại khi chưa thay đổi gì.
401API token bị thiếu hoặc không hợp lệKiểm tra header Authorization. Xem Xác thực.
403BoxHero từ chối thay đổi — ví dụ: thay đổi vi phạm quy tắc tồn kho hoặc revision bạn gửi đã cũKiểm tra code để biết lý do. Sửa yêu cầu, hoặc lấy dữ liệu mới nhất, trước khi thử lại.
404Tài nguyên không tồn tại trong nhóm này, hoặc đã bị xóaKiểm tra id. Không thử lại khi chưa thay đổi gì.
429Quá nhiều yêu cầuChờ rồi thử lại. Xem Giới hạn tần suất.

Các loại lỗi mà mỗi endpoint có thể trả về được liệt kê cùng endpoint đó trong Tài liệu tham khảo API.

Để cập nhật hoặc xóa giao dịch, hãy gửi revision mới nhất mà bạn đã thấy. Nếu trong lúc đó có người khác đã thay đổi giao dịch, API sẽ từ chối yêu cầu với 403 và code là tx-modify-revision-mismatch. Hãy rẽ nhánh theo code: lấy lại giao dịch, kiểm tra thay đổi, rồi thử lại với revision mới.

const res = await fetch(`https://rest.boxhero-app.com/v1/transactions/${id}`, {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.BOXHERO_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ revision, memo: "Recounted" }),
});
if (res.status === 403) {
const error = await res.json();
if (error.code === "tx-modify-revision-mismatch") {
// Fetch the transaction again, check the change, then retry with its new revision.
}
}