Halaman ini mencantumkan jenis data yang dapat Anda gunakan sebagai jenis parameter API di parameter jalur atau kueri untuk metode API backend, dan jenis yang dapat Anda gunakan sebagai jenis nilai yang ditampilkan metode atau jenis isi permintaan.
Jenis yang didukung untuk parameter jalur dan kueri
Jenis yang didukung untuk parameter jalur dan kueri adalah sebagai berikut:
java.lang.String
java.lang.Boolean
danboolean
java.lang.Integer
danint
java.lang.Long
danlong
java.lang.Float
danfloat
java.lang.Double
dandouble
java.util.Date
com.google.api.server.spi.types.DateAndTime
com.google.api.server.spi.types.SimpleDate
enum
apa pun- Array atau
java.util.Collection
dari jenis yang tercantum di sini. Array atau koleksi jenis lain tidak didukung.
Untuk menentukan parameter sebagai parameter jalur atau kueri, anotasikan
parameter dengan @Named
.
Contoh:
public Resource get(@Named("id") int id) { … }
Parameter jalur
Parameter jalur adalah parameter metode yang disertakan dalam properti path
dari
anotasi
@ApiMethod
. Jika path
tidak ditentukan, parameter apa pun yang tidak dianotasi dengan @Nullable
atau @DefaultValue
akan otomatis ditambahkan ke jalur sebagai parameter jalur. Contoh:
public Resource get(@Named("id") int id) { … }
Untuk menambahkan parameter ke path
secara manual, sertakan nama parameter dalam tanda {}
di jalur. Parameter yang ditambahkan secara manual ke path
tidak dapat dianotasi dengan
@Nullable
atau @DefaultValue
. Contoh:
@ApiMethod(path = "resources/{id}")
public Resource get(@Named("id") int id) { … }
Parameter kueri
Parameter kueri adalah parameter metode yang tidak disertakan dalam properti path
anotasi @ApiMethod
. Perhatikan bahwa parameter opsional, yaitu parameter yang dianotasi dengan @Nullable
atau @DefaultValue
, tidak pernah otomatis ditambahkan ke path
, sehingga parameter tersebut otomatis menjadi parameter kueri jika tidak ada path
yang ditentukan.
Contoh:
public Resource get(@Named("id") @Nullable int id) { … }
Jika path
ditentukan, Anda dapat menjadikan parameter sebagai parameter kueri dengan tidak menyertakannya dalam path
. Contoh:
@ApiMethod(path = "resources")
public Resource get(@Named("id") int id) { … }
Jenis yang dimasukkan
Jenis yang dimasukkan adalah jenis yang menerima perlakuan khusus oleh Framework Cloud Endpoints. Jika jenis tersebut digunakan sebagai parameter metode, jenis tersebut tidak menjadi bagian dari API. Sebagai gantinya, parameter diisi oleh Framework Endpoint.
Jenis yang dimasukkan adalah sebagai berikut:
com.google.appengine.api.users.User
javax.servlet.http.HttpServletRequest
javax.servlet.ServletContext
Jenis entitas
Dalam dokumentasi Endpoints Frameworks, jenis entity sinonim dengan Java Beans. Class yang Anda tentukan untuk digunakan di API harus:
- Memiliki konstruktor publik yang tidak memerlukan argumen.
- Kontrol akses ke properti pribadi menggunakan pengambil dan penyetel. Selain itu, setiap penyetel hanya boleh menggunakan satu parameter.
Biasanya, jenis entity juga mengimplementasikan Serializable, tetapi ini bukan persyaratan untuk menggunakan Framework Endpoint.
Jangan gunakan
anotasi @Named
untuk parameter jenis entity.
Isi permintaan
Saat Anda meneruskan jenis entity sebagai parameter dalam metode, properti dalam jenis entity akan dipetakan ke kolom JSON dalam isi permintaan. Metode Anda hanya boleh berisi satu parameter jenis entity. Contoh:
public Resource set(Resource resource) { … }
Anda dapat menyertakan parameter jenis non-entity dan parameter jenis entity dalam metode. Contoh:
@ApiMethod(name = "echo")
public Message echo(Message message, @Named("n") @Nullable Integer n) { … }
Pada contoh sebelumnya, properti dalam parameter message
dipetakan ke
kolom JSON dalam isi permintaan. Anotasi
@Nullable
menunjukkan bahwa parameter n
bersifat opsional, sehingga diteruskan sebagai
parameter kueri.
Objek respons
Nilai yang ditampilkan metode harus berupa salah satu dari berikut:
- Jenis entity
- Jenis generik
- CollectionResponse (
com.google.api.server.spi.response.CollectionResponse
) atau subclass CollectionResponse
Kolom JSON dalam objek respons dipetakan dari properti dalam nilai yang ditampilkan.
Pengaruh @ApiTransformer
pada jenis
Jika menggunakan
@ApiTransformer
,
Anda perlu mengetahui pengaruh transformasi terhadap jenis tersebut.
@ApiTransformer
dan jenis parameter
Saat @ApiTransformer
digunakan, apakah parameter metode yang dihasilkan dianggap sebagai jenis parameter atau tidak bergantung pada hasil transformasi,
bukan pada jenis aslinya. Jika jenis diubah menjadi jenis parameter, parameter metode dianggap sebagai parameter API dan harus dianotasi dengan
@Named
.
@ApiTransformer
dan jenis entity
Demikian pula, apakah parameter metode atau jenis nilai yang ditampilkan
dianggap sebagai jenis entity atau tidak bergantung pada hasil transformasi, bukan pada
jenis aslinya. Jika jenis diubah menjadi jenis entity, jenis tersebut dapat
digunakan sebagai jenis nilai yang ditampilkan, dan jika digunakan sebagai parameter metode, jenis tersebut tidak dapat dianotasikan
dengan @Named
karena dianggap sebagai jenis entity.
@ApiTransformer
dan jenis yang dimasukkan
Jenis yang dimasukkan tidak terpengaruh oleh @ApiTransformer
. Parameter metode hanya
dianggap sebagai jenis yang dimasukkan jika jenis aslinya yang tidak ditransformasi adalah jenis
yang dimasukkan.