Chỉ mục
BadRequest(thông báo)BadRequest.FieldViolation(thông báo)Code(enum)ErrorInfo(thông báo)Help(thông báo)Help.Link(thông báo)LocalizedMessage(thông báo)RequestInfo(thông báo)Status(thông báo)
BadRequest
Mô tả các lỗi vi phạm trong yêu cầu của ứng dụng. Loại lỗi này tập trung vào các khía cạnh cú pháp của yêu cầu.
| Trường | |
|---|---|
field_violations[] |
Mô tả tất cả các lỗi vi phạm trong một yêu cầu của máy khách. |
FieldViolation
Một loại thông báo dùng để mô tả một trường yêu cầu không hợp lệ.
| Trường | |
|---|---|
field |
Đường dẫn dẫn đến một trường trong nội dung yêu cầu. Giá trị này sẽ là một chuỗi các giá trị nhận dạng được phân tách bằng dấu chấm để xác định một trường vùng đệm giao thức. Hãy cân nhắc thực hiện những bước sau: Trong ví dụ này, trong proto
Trong JSON, các giá trị tương tự được biểu thị như sau:
|
description |
Nội dung mô tả lý do khiến phần tử yêu cầu không hợp lệ. |
reason |
Lý do gây ra lỗi ở cấp trường. Đây là một giá trị hằng số xác định nguyên nhân gần nhất gây ra lỗi ở cấp trường. Giá trị này phải xác định duy nhất loại FieldViolation trong phạm vi của google.rpc.ErrorInfo.domain. Tên này chỉ được dài tối đa 63 ký tự và phải khớp với biểu thức chính quy |
localized_message |
Cung cấp thông báo lỗi đã bản địa hoá cho các lỗi ở cấp trường mà người dùng API có thể nhận được một cách an toàn. |
Mã
Mã lỗi chuẩn cho các API gRPC.
Đôi khi, nhiều mã lỗi có thể áp dụng. Các dịch vụ phải trả về mã lỗi cụ thể nhất có thể áp dụng. Ví dụ: ưu tiên OUT_OF_RANGE hơn FAILED_PRECONDITION nếu cả hai mã đều áp dụng. 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; được trả về khi thành công. Ánh xạ HTTP: 200 OK |
CANCELLED |
Thao tác đã bị huỷ, thường là do người gọi. Á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ị Ánh xạ HTTP: 500 Lỗi máy chủ nội bộ |
INVALID_ARGUMENT |
Ứng dụng khách chỉ định đối số không hợp lệ. Xin lưu ý rằng thuộc tính này khác với Ánh xạ HTTP: 400 Yêu cầu không hợp lệ |
DEADLINE_EXCEEDED |
Đã hết thời hạn trước khi thao tác có thể hoàn tất. Đối với các thao tác thay đổi trạng thái của hệ thống, lỗi này có thể được trả về ngay cả khi thao tác đã hoàn tất thành công. Ví dụ: phản hồi thành công từ một máy chủ có thể bị trì hoãn đủ lâu để thời hạn hết hiệu lực. Ánh xạ HTTP: 504 Hết thời gian chờ của cổng nối |
NOT_FOUND |
Không tìm thấy một số thực thể được yêu cầu (ví dụ: tệp hoặc thư mục). Lưu ý cho 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ư việc triển khai tính năng từng bước hoặc danh sách cho phép không có trong tài liệu, thì bạn có thể sử dụng Ánh xạ HTTP: 404 Not Found |
ALREADY_EXISTS |
Đã tồn tại thực thể mà ứng dụng khách tìm cách tạo (ví dụ: tệp hoặc thư mục). Ánh xạ HTTP: 409 Xung đột |
PERMISSION_DENIED |
Người gọi không có quyền thực thi thao tác đã chỉ định. Bạn không được dùng Á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 đã cạn kiệ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. Ánh xạ HTTP: 429 Quá nhiều yêu cầu |
FAILED_PRECONDITION |
Thao tác bị từ chối vì hệ thống không ở trạng thái cần thiết để thực hiện thao tác. Ví dụ: thư mục cần xoá không phải là thư mục trống, thao tác rmdir được áp dụng cho một thư mục không phải là thư mục, v.v. Người triển khai dịch vụ có thể sử dụng các nguyên tắc sau để quyết định giữa Ánh xạ HTTP: 400 Yêu cầu không hợp lệ |
ABORTED |
Thao tác bị huỷ, thường là do vấn đề về tính đồ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 Ánh xạ HTTP: 409 Xung đột |
OUT_OF_RANGE |
Thao tác được thực hiện ngoài phạm vi hợp lệ. Ví dụ: tìm kiếm hoặc đọc quá cuối tệp. Không giống như Có một số điểm trùng lặp giữa Ánh xạ HTTP: 400 Yêu cầu 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. Liên kết HTTP: 501 Chưa 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ị phá vỡ. Mã lỗi này dành riêng cho các lỗi nghiêm trọng. Ánh xạ HTTP: 500 Lỗi máy chủ nội bộ |
UNAVAILABLE |
Dịch vụ này hiện không dùng được. Đây thường là một điều kiện tạm thời và bạn có thể khắc phục bằng cách thử lại với độ trễ. Xin lưu ý rằng không phải lúc nào bạn cũng nên thử lại các thao tác không có tính chất luỹ đẳng. Hãy xem các nguyên tắc ở trên để quyết định giữa Ánh xạ HTTP: 503 Không có dịch vụ |
DATA_LOSS |
Mất hoặc hư hỏng dữ liệu và không phục hồi được. Ánh xạ HTTP: 500 Lỗi máy chủ nội bộ |
ErrorInfo
Mô tả nguyên nhân gây ra lỗi kèm theo thông tin chi tiết có cấu trúc.
Ví dụ về lỗi khi liên hệ với API "pubsub.googleapis.com" khi API này chưa được bật:
{ "reason": "API_DISABLED"
"domain": "googleapis.com"
"metadata": {
"resource": "projects/123",
"service": "pubsub.googleapis.com"
}
}
Phản hồi này cho biết API pubsub.googleapis.com chưa được bật.
Ví dụ về lỗi được trả về khi cố gắng tạo một phiên bản Spanner ở một khu vực hết hàng:
{ "reason": "STOCKOUT"
"domain": "spanner.googleapis.com",
"metadata": {
"availableRegions": "us-central1,us-east2"
}
}
| Trường | |
|---|---|
reason |
Lý do xảy ra lỗi. Đây là một giá trị hằng số xác định nguyên nhân gần nhất gây ra lỗi. Lý do gây ra lỗi là duy nhất trong một miền lỗi cụ thể. Tên này chỉ được dài tối đa 63 ký tự và phải khớp với biểu thức chính quy |
domain |
Nhóm logic mà "lý do" thuộc về. Miền lỗi thường là tên dịch vụ đã đăng ký của công cụ hoặc sản phẩm tạo ra lỗi. Ví dụ: "pubsub.googleapis.com". Nếu lỗi do một số cơ sở hạ tầng phổ biến tạo ra, thì miền lỗi phải là một giá trị duy nhất trên toàn cầu để xác định cơ sở hạ tầng đó. Đối với cơ sở hạ tầng API của Google, miền lỗi là "googleapis.com". |
metadata |
Thông tin chi tiết có cấu trúc bổ sung về lỗi này. Khoá phải khớp với biểu thức chính quy |
Trợ giúp
Cung cấp đường liên kết đến tài liệu hoặc để thực hiện một hành động ngoài băng tần.
Ví dụ: nếu một quy trình kiểm tra hạn mức không thành công và có lỗi cho biết dự án gọi chưa bật dịch vụ được truy cập, thì lỗi này có thể chứa một URL trỏ trực tiếp đến đúng vị trí trong bảng điều khiển dành cho nhà phát triển để chuyển đổi bit.
| Trường | |
|---|---|
links[] |
(Các) URL trỏ đến thông tin bổ sung về cách xử lý lỗi hiện tại. |
Đường liên kết
Mô tả một đường liên kết URL.
| Trường | |
|---|---|
description |
Mô tả nội dung mà đường liên kết cung cấp. |
url |
URL của đường liên kết. |
LocalizedMessage
Cung cấp một thông báo lỗi đã được bản địa hoá và an toàn để trả về cho người dùng, thông báo này có thể được đính kèm vào một lỗi RPC.
| Trường | |
|---|---|
locale |
Ngôn ngữ được dùng theo quy cách được xác định tại https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Ví dụ: "en-US", "fr-CH", "es-MX" |
message |
Thông báo lỗi được bản địa hoá theo ngôn ngữ ở trên. |
RequestInfo
Chứa siêu dữ liệu về yêu cầu mà các ứng dụng có thể đính kèm khi gửi lỗi hoặc cung cấp các hình thức phản hồi khác.
| Trường | |
|---|---|
request_id |
Một chuỗi không rõ ràng mà chỉ dịch vụ tạo ra chuỗi đó mới diễn giải được. Ví dụ: bạn có thể dùng mã này để xác định các yêu cầu trong nhật ký của dịch vụ. |
serving_data |
Mọi dữ liệu được dùng để xử lý yêu cầu này. Ví dụ: một dấu vết ngăn xếp được mã hoá có thể được gửi lại cho nhà cung cấp dịch vụ để gỡ lỗi. |
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, trong đó có API REST và API RPC. gRPC sử dụng loại 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 cụ thể 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ý mô hình này trong Hướng dẫn thiết kế API.
| Trường | |
|---|---|
code |
Mã trạng thái, phải là giá trị enum của |
message |
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 mà người dùng thấy đều phải được bản địa hoá và gửi trong trường |
details[] |
Danh sách các thông báo chứa thông tin cụ thể về lỗi. Có một nhóm gồm nhiều loại thông báo chung để API sử dụng. |