Package google.rpc

Chỉ mục

Mã lỗi chuẩn cho API gRPC.

Đôi khi, có thể áp dụng nhiều mã lỗi. Dịch vụ phải trả về mã lỗi cụ thể nhất áp dụng. Ví dụ: ưu tiên OUT_OF_RANGE hơn FAILED_PRECONDITION nếu áp dụng cả hai mã. Tương tự, hãy ưu tiên NOT_FOUND hoặc ALREADY_EXISTS hơn FAILED_PRECONDITION.

Enum
OK

Không phải là lỗi; đã trả về khi thành công.

Ánh xạ HTTP: 200 OK

CANCELLED

Thao tác đã bị huỷ, thường là do phương thức gọi thực hiện.

Ánh xạ HTTP: 499 ứng dụng đã đóng yêu cầu

UNKNOWN

Lỗi không xác định. Ví dụ: lỗi này có thể được trả về khi giá trị Status nhận được từ một không gian địa chỉ khác thuộc về một không gian lỗi chưa xác định trong không gian địa chỉ này. Ngoài ra, các lỗi do API không trả về đủ thông tin lỗi có thể được chuyển đổi thành lỗi này.

Ánh xạ HTTP: Lỗi máy chủ nội bộ 500

INVALID_ARGUMENT

Ứng dụng chỉ định một đối số không hợp lệ. Xin lưu ý rằng giá trị này khác với FAILED_PRECONDITION. INVALID_ARGUMENT cho biết các đối số có vấn đề bất kể trạng thái của hệ thống (ví dụ: tên tệp không đúng định dạng).

Ánh xạ HTTP: Yêu cầu 400 không hợp lệ

DEADLINE_EXCEEDED

Đã hết thời hạn này trước khi có thể hoàn tất thao tác. Đối với các tác vụ thay đổi trạng thái của hệ thống, lỗi này có thể được trả về ngay cả khi tác vụ đó đã hoàn tất thành công. Ví dụ: một phản hồi thành công từ máy chủ có thể bị trì hoãn đủ lâu để hết thời hạn.

Ánh xạ HTTP: Thời gian chờ cổng 504

NOT_FOUND

Không tìm thấy một số thực thể đã yêu cầu (ví dụ: tệp hoặc thư mục).

Lưu ý đối với các nhà phát triển máy chủ: nếu một yêu cầu bị từ chối đối với toàn bộ một nhóm người dùng, chẳng hạn như phát hành dần tính năng hoặc danh sách cho phép không được ghi nhận, thì NOT_FOUND có thể được sử dụng. Nếu yêu cầu bị từ chối đối với một số người dùng trong một lớp người dùng, chẳng hạn như kiểm soát quyền truy cập dựa trên người dùng, thì bạn phải sử dụng PERMISSION_DENIED.

Ánh xạ HTTP: 404 Không tìm thấy

ALREADY_EXISTS

Thực thể mà ứng dụng cố gắng tạo (ví dụ: tệp hoặc thư mục) đã tồn tại.

Ánh xạ HTTP: Xung đột 409

PERMISSION_DENIED

Phương thức gọi không có quyền thực thi thao tác đã chỉ định. Không được sử dụng PERMISSION_DENIED cho các từ chối do sử dụng hết một số tài nguyên (thay vào đó, hãy sử dụng RESOURCE_EXHAUSTED cho những lỗi đó). Không được sử dụng PERMISSION_DENIED nếu không thể xác định phương thức gọi (thay vào đó, hãy sử dụng UNAUTHENTICATED cho những lỗi đó). Mã lỗi này không ngụ ý rằng yêu cầu là hợp lệ hay thực thể được yêu cầu tồn tại hay đáp ứng các điều kiện tiên quyết khác.

Ánh xạ HTTP: 403 Bị cấm

UNAUTHENTICATED

Yêu cầu không có thông tin xác thực hợp lệ cho thao tác.

Ánh xạ HTTP: 401 không được phép

RESOURCE_EXHAUSTED

Một số tài nguyên đã hết, có thể là hạn mức cho mỗi người dùng hoặc có thể toàn bộ hệ thống tệp đã hết dung lượng.

Liên kết HTTP: 429 quá nhiều yêu cầu

FAILED_PRECONDITION

Hoạt động đã bị từ chối vì hệ thống không ở trạng thái cần thiết để thực thi hoạt động. Ví dụ: thư mục cần xoá là thư mục không trống, thao tác rmdir được áp dụng cho thư mục không phải thư mục, v.v.

Trình triển khai dịch vụ có thể sử dụng các nguyên tắc sau đây để quyết định giữa FAILED_PRECONDITION, ABORTEDUNAVAILABLE: (a) Sử dụng UNAVAILABLE nếu ứng dụng chỉ có thể thử lại lệnh gọi không thành công. (b) Sử dụng ABORTED nếu ứng dụng nên thử lại ở cấp cao hơn. Ví dụ: khi tập hợp và tập hợp kiểm thử do ứng dụng chỉ định không thành công, cho biết ứng dụng nên khởi động lại trình tự đọc-sửa đổi-ghi. (c) Sử dụng FAILED_PRECONDITION nếu ứng dụng không nên thử lại cho đến khi trạng thái hệ thống được khắc phục rõ ràng. Ví dụ: nếu "rmdir" không thành công do thư mục không trống, thì FAILED_PRECONDITION phải được trả về vì ứng dụng không được thử lại trừ khi các tệp bị xoá khỏi thư mục.

Ánh xạ HTTP: Yêu cầu 400 không hợp lệ

ABORTED

Thao tác này đã bị huỷ, thường do vấn đề đồng thời, chẳng hạn như lỗi kiểm tra trình tự, hoặc huỷ giao dịch.

Hãy xem các nguyên tắc ở trên để quyết định giữa FAILED_PRECONDITION, ABORTEDUNAVAILABLE.

Ánh xạ HTTP: Xung đột 409

OUT_OF_RANGE

Đã cố gắng thực hiện thao tác vượt quá phạm vi hợp lệ. Ví dụ: tìm kiếm hoặc đọc khi hết tệp trong quá khứ.

Không giống như INVALID_ARGUMENT, lỗi này cho biết một vấn đề có thể khắc phục nếu trạng thái hệ thống thay đổi. Ví dụ: hệ thống tệp 32 bit sẽ tạo INVALID_ARGUMENT nếu được yêu cầu đọc tại một độ lệch không nằm trong phạm vi [0,2^32-1], nhưng sẽ tạo OUT_OF_RANGE nếu được yêu cầu đọc từ một độ lệch vượt quá kích thước tệp hiện tại.

Có một chút trùng lặp giữa FAILED_PRECONDITIONOUT_OF_RANGE. Bạn nên sử dụng OUT_OF_RANGE (lỗi cụ thể hơn) khi áp dụng lỗi này để phương thức gọi lặp lại trong một không gian có thể dễ dàng tìm lỗi OUT_OF_RANGE nhằm phát hiện thời điểm hoàn tất.

Ánh xạ HTTP: Yêu cầu 400 không hợp lệ

UNIMPLEMENTED

Thao tác này chưa được triển khai hoặc không được hỗ trợ/bật trong dịch vụ này.

Ánh xạ HTTP: 501 chưa được triển khai

INTERNAL

Lỗi nội bộ. Điều này có nghĩa là một số bất biến mà hệ thống cơ bản dự kiến đã bị hỏng. Mã lỗi này dành riêng cho các lỗi nghiêm trọng.

Ánh xạ HTTP: Lỗi máy chủ nội bộ 500

UNAVAILABLE

Dịch vụ này hiện không dùng được. Đây rất có thể là một tình trạng tạm thời và có thể khắc phục bằng cách thử lại bằng thuật toán thời gian đợi. Lưu ý rằng việc thử lại các thao tác không thay thế không phải lúc nào cũng an toàn.

Hãy xem các nguyên tắc ở trên để quyết định giữa FAILED_PRECONDITION, ABORTEDUNAVAILABLE.

Ánh xạ HTTP: Dịch vụ 503 không có sẵn

DATA_LOSS

Mất hoặc hỏng dữ liệu và không thể khôi phục.

Ánh xạ HTTP: Lỗi máy chủ nội bộ 500

Trạng thái

Loại Status xác định một mô hình lỗi logic phù hợp với nhiều môi trường lập trình, bao gồm cả API REST và API RPC. gRPC sử dụng khoá này. Mỗi thông báo Status chứa 3 phần dữ liệu: mã lỗi, thông báo lỗi và thông tin chi tiết về lỗi.

Bạn có thể tìm hiểu thêm về mô hình lỗi này và cách xử lý lỗi trong Hướng dẫn thiết kế API.

Các trường
code

int32

Mã trạng thái, phải là giá trị enum của google.rpc.Code.

message

string

Một thông báo lỗi dành cho nhà phát triển, phải bằng tiếng Anh. Mọi thông báo lỗi dành cho người dùng phải được bản địa hoá và gửi trong trường google.rpc.Status.details hoặc được ứng dụng bản địa hoá.

details[]

Any

Danh sách các thông báo chứa thông tin chi tiết về lỗi. Có một tập hợp các loại thông báo phổ biến để API sử dụng.