このページでは、複数のクラスで実装される API を作成するときにコードをどのようにデコレートするかを説明します。クラスを 1 つだけ使用して API を実装した場合は、API を作成するをご覧ください。 使用可能なすべてのデコレータについて詳しくは、デコレータをご覧ください。
api_collection
は任意の名前に置き換えます。ただし、同じ名前を API の各クラスに使用してください。前のスニペットのように、API の各クラス名の前にデコレータを付ける必要があります。
resource_name
引数について
api_class
の resource_name
引数は省略可能であり、API で公開するクラスの名前です。この名前は、API Explorer で表示され、そのクラスで公開されるすべてのメソッドの名前の先頭に付けられます。
path
引数について
api_class
の path
引数は省略可能であり、URL でクラスメソッドが示される相対位置を指定します。前述の例では、クラス Shelves
の path
が指定されていないため、このクラスのメソッドは /_ah/api/library/v1
の下に存在し、ここでアクセスできます。たとえば、list
メソッドにはパス /_ah/api/library/v1/list
からアクセスできます。
クラスの path
引数を指定すると、指定されたパスがルートの末尾に付加されます。前述の例では、path
引数 books
がクラス 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
ならば、サーバーを次のようにして作成します。