이 페이지에서는 코드를 데코레이션하여 여러 클래스로 구현된 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이면 서버를 다음과 같이 만듭니다.