Creazione di un'API implementata con più classi

Questa pagina descrive come decorare il codice per creare un'API implementata in più classi. Se hai implementato l'API utilizzando una sola classe, consulta Creazione dell'API. Per informazioni dettagliate su tutti i decoratori disponibili, consulta Decoratori.

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

Sostituisci api_collection con il nome che preferisci, purché utilizzi lo stesso nome per ogni classe nell'API. Devi anteporre a ogni classe nell'API il decoratore come mostrato nello snippet precedente.

Informazioni sull'argomento resource_name

L'argomento facoltativo resource_name per api_class è il nome della classe che vuoi esporre nell'API; questo è il nome che viene visualizzato in API Explorer, anteposto a tutti i metodi esposti nella classe.

Informazioni sull'argomento path

L'argomento facoltativo path per api_class specifica la posizione relativa in cui i metodi della classe vengono visualizzati nell'URL. Nell'esempio precedente, non è stato specificato un path per la classe Shelves, quindi i suoi metodi sono accessibili nella root, /_ah/api/library/v1. Ad esempio, il metodo list è accessibile da il percorso /_ah/api/library/v1/list.

Se specifichi un argomento path per una classe, il percorso specificato viene aggiunto alla root. Nell'esempio precedente, l'argomento path books è specificato per la classe Books, quindi i suoi metodi sono accessibili in /_ah/api/library/v1/books. Ad esempio, il metodo best_sellers_list è accessibile dal percorso /_ah/api/library/v1/books/best_sellers_list.

L'argomento path è facoltativo per i metodi. Se non specifichi un path, viene utilizzato il nome del metodo. Tutti i percorsi specificati per i metodi vengono aggiunti al percorso della classe. Nell'esempio precedente, bookmark è specificato come path per il get_bookmark metodo. Il metodo get_bookmark è accessibile dal percorso /_ah/api/library/v1/books/bookmark.

Puoi sostituire l'argomento path della classe specificando un argomento path del metodo che inizia con /. Ad esempio, supponiamo che il metodo get_bookmark nella classe Books abbia il seguente percorso:

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

La barra iniziale modifica il percorso del metodo get_bookmark in /_ah/api/library/v1/bookmark.

Gestire un'API multi-classe

Nel codice endpoints.api_server che crea il server API, fornisci il nome che hai assegnato alla raccolta api_class. Ad esempio, se il nome della raccolta è api_collection, puoi creare il server nel seguente modo:

api = endpoints.api_server([api_collection])

Passaggi successivi