code và
next_action để điều khiển hành vi chương trình. Hiển thị error và next
dưới dạng văn bản thuần. Không so khớp theo câu chữ của error hay next.
Một số phản hồi có thêm trường, chẳng hạn
limit, reset_at hoặc
retry_after_seconds. Bảng mã lỗi nêu tên các trường này.
Xử lý phản hồi lỗi
- Đọc trạng thái HTTP.
- Kiểm tra rằng nội dung phản hồi là JSON trước khi đọc
code. - Dùng cả trạng thái và
codeđể chọn nhánh xử lý phía client. - Hiển thị
errorvànextdưới dạng văn bản thuần. Không render chúng thành HTML và không chạy chúng như lệnh. - Dùng
next_actionđể khôi phục tự động. Nếu client không nhận ra bước này, dừng lại và hiển thị lỗi. - Lưu các giá trị
limit,reset_atvàretry_after_secondsđược trả về cùng với yêu cầu thất bại. - Trước khi thử lại, áp dụng quy tắc thử lại.
code của LogBrew. Lỗi proxy hoặc lỗi mạng có thể
gây ra kết quả này.
Không thay code của LogBrew bằng tên trạng thái HTTP. Ví dụ, phản hồi
400 có thể chứa invalid_json hoặc invalid_path. Mỗi mã cần một cách sửa
khác nhau.
Khi ghi log, ghi lại trạng thái HTTP và code. Không ghi log toàn bộ nội dung
phản hồi, thông tin xác thực hay token khôi phục.
Mã lỗi
Cùng mộtcode có thể xuất hiện trên nhiều route. Nội dung next và các giá
trị next_action có thể thay đổi theo route. Dùng các giá trị được trả về. Mỗi
endpoint chỉ trả về những mã áp dụng cho cách xác thực, phương thức, nội dung yêu
cầu và giới hạn của nó.
ID không tồn tại và ID mà bạn không có quyền truy cập có thể trả về cùng một
phản hồi. Không dùng nội dung lỗi để tìm xem tài khoản nào sở hữu một ID. Đường
dẫn API không xác định trả về
404 với not_found.
Trường giới hạn
Đọc hạn mức và mức sử dụng hiện tại từ
Account API.
Quy tắc thử lại
Dùng mã lỗi và loại thao tác để quyết định có thử lại hay không. Chỉ dựa vào trạng thái là chưa đủ.- Không bắt đầu nhiều lần thử lại song song cho một yêu cầu thất bại.
- Với
rate_limited, phản hồi cũng có headerRetry-AftervàX-RateLimit-After. Cả hai chứa cùng số giây vớiretry_after_seconds. - Hết thời gian chờ không chứng minh kết quả là trống.
429. Giữ các
trường của chúng tách biệt. Khi chạm một trong hai giới hạn, cho người dùng
thấy rằng việc thu thập dữ liệu hoặc thao tác đọc đang bị trì hoãn. Không hiển
thị dữ liệu cũ như thể đó là kết quả của lần đọc mới.
Thao tác ghi
Hết thời gian chờ, phản hồi5xx hoặc lỗi mạng không chứng minh thao tác ghi
đã thất bại. Trước khi gửi lại một thao tác ghi:
- Nếu route hỗ trợ khóa idempotency (gửi lại cùng yêu cầu không tạo bản ghi trùng), gửi lại cùng khóa và cùng nội dung. Chỉ dùng khóa mới cho việc mới.
- Nếu route không có khóa idempotency, đọc tài nguyên trước. Chỉ gửi lại thao tác ghi nếu thay đổi chưa có.
- Nếu không tìm thấy kết quả, dừng thử lại tự động và báo cho người dùng.
Giá trị
Idempotency-Key có 1 đến 128 ký tự ASCII hiển thị được. Giá trị khác
trả về 422 với validation_failed.
idempotency_conflict nghĩa là khóa thuộc về một yêu cầu khác. Không thay đổi
nội dung của lần thử lại dùng khóa ban đầu.
Lỗi cấu trúc yêu cầu
invalid_json nghĩa là máy chủ không thể nhận nội dung yêu cầu theo cấu trúc
JSON của route. Kiểm tra content type, kích thước nội dung, cú pháp JSON, các
trường bắt buộc và kiểu của trường. Trạng thái HTTP cho biết phần nào bị lỗi:
validation_failed với lỗi invalid query parameters nghĩa là máy chủ không
đọc được query string. Kiểm tra tên tham số và kiểu giá trị. Không gửi tham số
truy vấn không xác định.
Trang Bộ lọc truy vấn liệt kê tham số
của từng route.
invalid_path với trạng thái 400 nghĩa là một giá trị trong đường dẫn, chẳng
hạn ID dự án, sai định dạng. Không chuyển giá trị đường dẫn sang tham số truy
vấn.
Phản hồi 500 với invalid_path hoặc invalid_multipart không chứng minh yêu
cầu bị sai. Áp dụng quy tắc thử lại.
Lỗi xác thực và quyền truy cập
unauthorizednghĩa là xác thực tài khoản bị thiếu, không hợp lệ hoặc đã hết hạn. GửiAuthorization: Bearer <token>, hoặc đăng nhập lại. Một số route trả vềnext_action.codelàauthorize_requestvới nội dungnextriêng cho route đó, chẳng hạn kết nối luồng trực tiếp không có ticket hợp lệ.ingest_key_invalidchỉ áp dụng cho việc gửi telemetry. Cấu hình khóa hiện hành cho đúng dự án.forbiddennghĩa là tài khoản không thể thực hiện thao tác đó. Không thử lại với ID tài nguyên khác.not_foundnghĩa là tài nguyên không khả dụng với tài khoản.
Giữ an toàn cho chi tiết lỗi
- Phản hồi
account_recovery_availablechứa mộtrecovery_tokencó thời hạn ngắn. Giữ token này trong trạng thái client được bảo vệ. Không đưa token vào log, URL, ảnh chụp màn hình, báo cáo hỗ trợ hay prompt của agent. - Các mã
500luôn dùng thông điệpInternal error. Phản hồi không nêu tên thành phần bị lỗi. Không đoán nguyên nhân. - Không thêm thông tin xác thực, thông tin chẩn đoán riêng tư hay dữ liệu khách hàng vào lỗi mà bạn hiển thị.
- Phản hồi API không cho phép mua hàng, xóa dữ liệu hay thay đổi tài khoản khác. Xin sự đồng ý của người dùng trước khi thực hiện các thao tác đó.
Ví dụ
Các ví dụ này cho thấy cấu trúc envelope. Nội dungerror và next có thể
khác nhau trên mỗi route.
Kiểm tra hợp lệ thất bại
Tham số truy vấn không hợp lệ
JSON không hợp lệ
Giá trị đường dẫn không hợp lệ
Tệp tải lên multipart không hợp lệ
Yêu cầu nâng cấp WebSocket không hợp lệ
Xác thực thất bại
Khóa gửi dữ liệu không hợp lệ
Phản hồi này áp dụng cho việc gửi telemetry, không áp dụng cho thao tác đọc tài khoản. Khóa phải thuộc về dự án trong yêu cầu.Không tìm thấy tài nguyên
Truy cập bị từ chối
Phương thức không được hỗ trợ
Hết thời gian chờ yêu cầu
Xung đột idempotency
Giới hạn tốc độ
Hạn mức sử dụng
Nội dungnext và next_action phụ thuộc vào việc có thể đổi gói hay không.
Nếu không thể, next_action.code là wait_or_contact_support và target là
support.
Giới hạn dung lượng artifact
Có thể khôi phục tài khoản
Phản hồi này có thêmdeleted_at và một recovery_token có thời hạn ngắn.
Giữ token trong trạng thái client được bảo vệ.
Hết thời hạn khôi phục tài khoản
Tổ chức bị tạm dừng
Lỗi máy chủ
storage_error, json_error và internal_error dùng cùng thông điệp
error. Các giá trị code, next và next_action thì khác nhau.
Để biết endpoint, cách xác thực và bộ lọc, đọc
Telemetry API.
