Membuat API yang diimplementasikan dengan beberapa class

Halaman ini menjelaskan cara mendekorasi kode untuk membuat API yang diterapkan di beberapa class. Jika Anda menerapkan API hanya menggunakan satu class, lihat Membuat API. Lihat Dekorator untuk mengetahui informasi mendetail tentang semua dekorator yang tersedia.

api_collection = endpoints.api(name="library", version="v1.0")


@api_collection.api_class(resource_name="shelves")
class Shelves(remote.Service):
    @endpoints.method(Request, Response)
    def list(self, request):
        return Response()


@api_collection.api_class(resource_name="books", path="books")
class Books(remote.Service):
    @endpoints.method(Request, Response, path="bookmark")
    def get_bookmark(self, request):
        return Response()

    @endpoints.method(Request, Response)
    def best_sellers_list(self, request):
        return Response()

Ganti api_collection dengan nama apa pun yang Anda inginkan, selama Anda menggunakan nama yang sama untuk setiap class di API. Anda harus mendahului setiap class di API dengan dekorator seperti yang ditunjukkan dalam cuplikan sebelumnya.

Tentang argumen resource_name

Argumen resource_name opsional untuk api_class adalah nama class yang ingin Anda ekspos di API; ini adalah nama yang muncul di API Explorer, yang ditambahkan di awal metode apa pun yang diekspos di class.

Tentang argumen path

Argumen path opsional untuk api_class menentukan lokasi relatif tempat metode class muncul di URL. Pada contoh sebelumnya, path tidak ditentukan untuk class Shelves, sehingga metodenya dapat diakses di root, /_ah/api/library/v1. Misalnya, metode list dapat diakses dari jalur /_ah/api/library/v1/list.

Jika Anda menentukan argumen path untuk class, jalur yang ditentukan akan ditambahkan ke root. Dalam contoh sebelumnya, argumen path books ditentukan untuk class Books, sehingga metodenya dapat diakses di /_ah/api/library/v1/books. Misalnya, metode best_sellers_list dapat diakses dari jalur /_ah/api/library/v1/books/best_sellers_list.

Argumen path bersifat opsional untuk metode. Jika Anda tidak menentukan path, nama metode akan digunakan. Setiap jalur yang ditentukan untuk metode akan ditambahkan ke jalur class. Pada contoh sebelumnya, bookmark ditentukan sebagai path untuk metode get_bookmark. Metode get_bookmark dapat diakses dari jalur /_ah/api/library/v1/books/bookmark.

Anda dapat mengganti argumen path class dengan menentukan argumen path metode yang dimulai dengan /. Misalnya, asumsikan bahwa metode get_bookmark di class Books memiliki jalur berikut:

@endpoints.method(Request, Response, path='/bookmark')
def get_bookmark(self, request):
  return Response()

Garis miring di awal mengubah jalur untuk metode get_bookmark menjadi /_ah/api/library/v1/bookmark.

Menayangkan API multi-class

Dalam kode endpoints.api_server yang membuat server API, Anda memberikan nama yang ditetapkan untuk koleksi api_class. Misalnya, jika nama koleksinya adalah api_collection, Anda akan membuat server sebagai berikut:

api = endpoints.api_server([api_collection])

Langkah selanjutnya