本頁說明如何修飾程式碼以建立在多個類別中實作的 API。如果您只使用一個類別實作 API,請參閱建立 API一文。如需所有可用裝飾器的詳細資訊,請參閱裝飾器一文。
將 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
,則會使用方法名稱。為方法指定的任何路徑都將附加至類別路徑後方。在上述範例中,針對 get_bookmark
方法,指定了 bookmark
做為 path
。您可從 /_ah/api/library/v1/books/bookmark
路徑存取 get_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
時,您可以依照下列方式建立伺服器: