Creazione di un'API implementata con più classi

In questa pagina viene descritto come decorare il codice per creare un'API implementata in più corsi. 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é sia lo stesso per ogni classe nell'API. Devi precedere ogni classe nell'API con il decoratore come mostrato nello snippet precedente.

Informazioni sull'argomento resource_name

L'argomento facoltativo resource_name per api_class è il nome della classe da esporre nell'API. questo è il nome che compare Explorer API, anteposto a eventuali metodi esposti nella classe.

Informazioni sull'argomento path

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

Se specifichi un argomento path per un corso, il percorso specificato viene aggiunto alla radice. Nell'esempio precedente, è specificato l'argomento path books per la classe Books, quindi i relativi metodi sono accessibili /_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 valore path, . Tutti i percorsi specificati per i metodi vengono aggiunti alla classe del tuo percorso di apprendimento. Nell'esempio precedente, bookmark è specificato come path per il metodo get_bookmark. 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 cambia il percorso del metodo get_bookmark in /_ah/api/library/v1/bookmark.

Gestione di un'API multiclasse

Nel codice endpoints.api_server che crea il server API, fornisci il nome assegnato per la raccoltaapi_class. Ad esempio, se il nome della raccolta è api_collection, devi creare il server come segue:

api = endpoints.api_server([api_collection])

Passaggi successivi