本頁面列出 endpoints
程式庫提供的例外狀況,以及 Cloud Endpoints Frameworks 支援的 HTTP 狀態碼。
在許多情況下,您可能會想使用常見的 HTTP 狀態碼,指出使用者 API 要求是否成功。舉例來說,如果使用者嘗試擷取不存在的實體,您可能會傳送 HTTP 404
狀態碼,表示 ID 為 entityId
的實體不存在。
您可以擲回 endpoints
程式庫提供的例外狀況,以傳送常見的 HTTP 狀態碼,如下所示:
Endpoints Frameworks 提供的例外狀況
Endpoints Frameworks 提供下列可對應到特定 HTTP 狀態碼的例外狀況:
例外狀況 | 對應的 HTTP 狀態碼 |
---|---|
com.google.api.server.spi.response.BadRequestException |
HTTP 400 |
com.google.api.server.spi.response.UnauthorizedException |
HTTP 401 |
com.google.api.server.spi.response.ForbiddenException |
HTTP 403 |
com.google.api.server.spi.response.NotFoundException |
HTTP 404 |
com.google.api.server.spi.response.ConflictException |
HTTP 409 |
com.google.api.server.spi.response.InternalServerErrorException |
HTTP 500 |
com.google.api.server.spi.response.ServiceUnavailableException |
HTTP 503 |
支援的 HTTP 狀態碼
Cloud Endpoints Frameworks 支援在 API 回應中使用 HTTP 狀態碼子集。下表說明支援的狀態碼。
HTTP 狀態碼 | 支援 |
---|---|
HTTP 2xx | 如果 API 方法成功傳回,Endpoints Frameworks 通常會假設狀態碼為 HTTP 200 。如果 API 方法回應類型為 void ,或 API 方法的傳回值為 null ,則會改為設定 HTTP 204 。 |
HTTP 3xx | 不支援 HTTP 3xx 狀態碼。若使用 HTTP 3xx 狀態碼,將會導致 HTTP 404 回應。 |
HTTP 4xx | 僅支援下列 HTTP 4xx 狀態碼:
404 :
|
HTTP 5xx | 所有 HTTP 5xx 狀態碼在用戶端回應中都會轉換為 HTTP 503 。 |
建立自己的例外狀況類別
如果您想為其他 HTTP 狀態碼建立其他例外狀況類別,則須將 com.google.api.server.spi.ServiceException
設為子類別。以下程式碼片段說明如何建立代表 HTTP 408
狀態碼的例外狀況類別:
使用未支援的 HTTP 狀態碼
您可能可以使用上述支援清單以外的 HTTP 狀態碼,請注意,如果您決定這麼做,可能會對存取 API 的用戶端程式庫造成意外後果。如要使用不支援的錯誤代碼,請按照上一節所述建立自己的例外狀況類別,並將新的 servlet 初始化參數 enableExceptionCompatibility
新增至 EndpointsServlet
:
<servlet>
<servlet-name>com.google.api.server.spi.EndpointsServlet</servlet-name>
<servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>...</param-value>
</init-param>
<init-param>
<param-name>enableExceptionCompatibility</param-name>
<param-value>true</param-value>
</init-param>
</servlet>