Dalam banyak situasi, Anda mungkin ingin menggunakan kode status HTTP umum untuk menunjukkan
keberhasilan atau kegagalan permintaan API pengguna. Misalnya, jika pengguna
mencoba mengambil entitas yang tidak ada, Anda dapat mengirim
kode status HTTP 404
untuk menyatakan bahwa tidak ada entitas dengan ID entity_id
.
Anda dapat mengirim kode status HTTP umum tersebut dengan memunculkan pengecualian yang disediakan oleh library endpoint sebagai berikut:
message = 'No entity with the id "%s" exists.' % entity_id
raise endpoints.NotFoundException(message)
Pengecualian yang disediakan oleh Framework Endpoints
Library endpoint menyediakan pengecualian berikut, yang sesuai dengan kode status HTTP tertentu:
Pengecualian | Kode status HTTP yang sesuai |
---|---|
endpoints.BadRequestException |
HTTP 400 |
endpoints.UnauthorizedException |
HTTP 401 |
endpoints.ForbiddenException |
HTTP 403 |
endpoints.NotFoundException |
HTTP 404 |
endpoints.InternalServerErrorException |
HTTP 500 |
Kode status HTTP yang didukung
Framework Cloud Endpoints mendukung sebagian kode status HTTP dalam respons API. Tabel berikut menjelaskan kode yang didukung.
Kode status HTTP | Dukungan |
---|---|
HTTP 2xx | HTTP 200 biasanya diasumsikan oleh Framework Endpoint jika metode API berhasil ditampilkan.Jika jenis respons metode API adalah VoidMessage atau nilai yang ditampilkan dari metode API adalah None , HTTP 204 akan ditetapkan. |
HTTP 3xx | Kode HTTP 3xx tidak didukung. Penggunaan kode HTTP 3xx akan menghasilkan respons HTTP 404 . |
HTTP 4xx | Hanya kode HTTP 4xx berikut yang didukung:
404 , kecuali untuk kode berikut:
|
HTTP 5xx | Semua kode status HTTP 5xx dikonversi menjadi HTTP 503 dalam respons klien. |
Membuat class pengecualian Anda sendiri
Jika ingin membuat class pengecualian lain untuk kode status HTTP lainnya, Anda
dapat melakukannya dengan membuat subclass endpoints.ServiceException
. Cuplikan berikut
menunjukkan cara membuat class pengecualian yang mewakili kode status HTTP 409:
import endpoints
import httplib
class ConflictException(endpoints.ServiceException):
"""Conflict exception that is mapped to a 409 response."""
http_status = httplib.CONFLICT