Membuat API menggunakan Framework Cloud Endpoints untuk Python

API adalah layanan remote procedure call (RPC) yang menyediakan metode jarak jauh yang dapat diakses oleh klien eksternal. Setiap API backend terdiri dari class layanan RPC yang merupakan subclass dari class ProtoRPC remote.Service, dan satu atau beberapa metode. Saat menentukan metode, Anda juga harus menentukan class Message untuk permintaan yang masuk ke metode tersebut dan respons yang ditampilkan olehnya. Class Message menjalankan fungsi pemetaan sehingga data yang masuk dapat diekstrak dan diberikan ke metode layanan dengan benar, atau diberikan dengan benar ke respons keluar.

Jika permintaan memiliki argumen jalur atau string kueri, Anda menggunakan class ResourceContainer untuk pemetaan, bukan class Message sederhana.

Terakhir, Anda perlu mendekorasi class layanan API dan metode class, serta menentukan class Message untuk permintaan dan respons.

Membuat API

Prosedur berikut menunjukkan cara mendekorasi kode Anda untuk membuat API yang diimplementasikan dalam satu class. Jika Anda memiliki API multi-class, lihat Membuat API yang diimplementasikan dengan beberapa class. Lihat Dekorator untuk mengetahui informasi mendetail tentang semua dekorator yang tersedia.

Untuk membuat API:

  1. Tambahkan impor yang diperlukan berikut:

    import endpoints
    from endpoints import message_types
    from endpoints import messages
    from endpoints import remote
  2. Tentukan subclass remote.Service dan hiasi dengan @endpoints.api:

    @endpoints.api(name="echo", version="v1")
    class EchoApi(remote.Service):

    Perhatikan bahwa nama API dan nama class layanan Anda tidak harus sama. Nomor versi berlaku untuk versi API. Nilai yang Anda masukkan akan menjadi bagian dari jalur di URL ke API Anda. Untuk mengetahui informasi selengkapnya tentang versi, lihat Menangani pembuatan versi API.

  3. Tentukan data yang diharapkan metode Anda dari permintaan dan data yang ditampilkan, lalu buat class Message untuk isi permintaan dan isi respons:

    class EchoRequest(messages.Message):
        message = messages.StringField(1)
    
    
    class EchoResponse(messages.Message):
        """A proto Message that contains a simple string field."""
    
        message = messages.StringField(1)
    
    
    ECHO_RESOURCE = endpoints.ResourceContainer(
        EchoRequest, n=messages.IntegerField(2, default=1)
    )

    Perhatikan bahwa jika tidak ada argumen yang muncul dalam isi permintaan, seperti dalam permintaan GET, Anda dapat menghilangkan class Message untuk permintaan tersebut dan cukup menggunakan nilai message_types.VoidMessage.

    Jika permintaan Anda memiliki argumen string kueri atau jalur, ganti class Message dengan ResourceContainer yang sesuai.

    Untuk mengetahui informasi lengkap tentang cara membentuk dan menggunakan class Message, lihat dokumentasi untuk class Message permintaan dan respons Google Protocol RPC.

  4. Buat metode untuk API Anda, dan hias dengan @endpoints.method:

    @endpoints.method(
            # This method takes a ResourceContainer defined above.
            ECHO_RESOURCE,
            # This method returns an Echo message.
            EchoResponse,
            path="echo",
            http_method="POST",
            name="echo",
        )
        def echo(self, request):

    Jika permintaan Anda memiliki data jalur atau string kueri, ganti jenis pesan permintaan dengan ResourceContainer yang sesuai.

  5. Tambahkan kode untuk menyajikan API Anda, seperti yang dijelaskan dalam Membuat server web.

Langkah berikutnya