이 페이지에서는 코드를 데코레이션하여 여러 클래스로 구현된 API를 생성하는 방법을 설명합니다. 클래스 하나만 사용하여 API를 구현한 경우 API 만들기를 참조하세요. 사용 가능한 모든 데코레이터에 대한 자세한 내용은 데코레이터를 참조하세요.
API의 각 클래스에 대해 동일한 이름을 사용하는 한, api_collection
를 원하는 이름으로 바꿉니다. 위 스니펫에 표시된 것처럼 API의 각 클래스 앞에 데코레이터를 두어야 합니다.
resource_name
인수 정보
api_class
의 선택사항인 resource_name
인수는 API에 노출하려는 클래스의 이름입니다. API 탐색기에도 이 이름이 표시되며, 클래스에 노출된 모든 메서드 앞에 추가됩니다.
path
인수 정보
api_class
의 선택사항인 path
인수는 URL에서 클래스 메서드가 표시되는 상대 위치를 지정합니다. 앞의 예시에서 Shelves
클래스에 path
가 지정되지 않았으므로 루트 /_ah/api/library/v1
아래에서 해당 메서드에 액세스할 수 있습니다. 예를 들어 /_ah/api/library/v1/list
경로에서 list
메서드에 액세스할 수 있습니다.
클래스에 path
인수를 지정하면 지정된 경로가 루트에 추가됩니다. 앞의 예시에서 Books
클래스에 path
인수 books
가 지정되었으므로 /_ah/api/library/v1/books
아래에서 해당 메서드에 액세스할 수 있습니다. 예를 들어 /_ah/api/library/v1/books/best_sellers_list
경로에서 best_sellers_list
메서드에 액세스할 수 있습니다.
메서드의 경우 path
인수는 선택사항입니다. path
를 지정하지 않으면 메서드 이름이 사용됩니다. 메서드에 지정된 경로는 클래스 경로에 추가됩니다. 위 예시에서는 bookmark
가 get_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
이면 서버를 다음과 같이 만듭니다.