建立以多個類別實作的 API

本頁說明如何修飾程式碼,以建立在多個類別中實作的 API。如果您僅使用一個類別實作 API,請參閱建立 API 一文。如需所有可用修飾符的詳細資訊,請參閱修飾符一文。

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()

api_collection 替換為您想使用的任何名稱,只要 API 中每個類別的名稱都相同即可。您必須在 API 中的各個類別前面加上修飾符,如上方的程式碼片段所示。

關於 resource_name 引數

api_class 的選用引數 resource_name 是您想在 API 中公開的類別名稱;這個名稱會顯示在 API Explorer 中,並加在類別中公開的任何方法前面。

關於 path 引數

api_class 的選用引數 path 會指定類別方法在網址中的相對顯示位置。在前述範例中,Shelves 類別並未指定 path,因此其方法可在根目錄 /_ah/api/library/v1 底下存取。舉例來說,list 方法可透過 /_ah/api/library/v1/list 這個路徑存取。

如果您為類別指定 path 引數,指定的路徑會附加到根目錄後方。在前述範例中,Books 類別指定了 path 引數 books,因此其方法可在 /_ah/api/library/v1/books 底下存取。舉例來說,best_sellers_list 方法可透過 /_ah/api/library/v1/books/best_sellers_list 這個路徑存取。

對於方法而言,path 是選用引數。如果您未指定 path,系統會使用方法名稱。為方法指定的任何路徑都將附加至類別路徑後方。前述範例將 bookmark 指定為 get_bookmark 方法的 path,因此 get_bookmark 方法可透過 /_ah/api/library/v1/books/bookmark 這個路徑存取。

您可以指定開頭為 / 的方法 path 引數,藉此覆寫類別 path 引數。舉例來說,假設 Books 類別中的 get_bookmark 方法有以下路徑:

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

開頭的正斜線會將 get_bookmark 方法的路徑變更為 /_ah/api/library/v1/bookmark

提供多類別的 API

在用來建立 API 伺服器的 endpoints.api_server 程式碼中,提供您為 api_class 集合指派的名稱。例如集合名稱為 api_collection 時,您可以依照下列方式建立伺服器:

api = endpoints.api_server([api_collection])

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
App Engine 適用的 Cloud Endpoints Frameworks
需要協助嗎?請前往我們的支援網頁