![](/img/trans.png)
[英]Make calls to Drive API inside of a Google App Engine Cloud Endpoints
[英]Google Cloud Endpoints V2 multi-class API error App Engine Standard
錯誤: ApiConfigurationError:嘗試使用多個不兼容的類來實現版本2的服務回顯。 有關如何實現多類API的示例,請參見api()的docstring。
碼:
import logging
import endpoints
from protorpc import message_types
from protorpc import messages
from protorpc import remote
class EchoRequest(messages.Message):
content = messages.StringField(1)
class EchoResponse(messages.Message):
content = messages.StringField(1)
ECHO_RESOURCE = endpoints.ResourceContainer(
EchoRequest, n=messages.IntegerField(2, default=1))
@endpoints.api(name='echo', version='v1',description='description')
class EchoApi(remote.Service):
@endpoints.method(
# This method takes a ResourceContainer defined above.
ECHO_RESOURCE,
# This method returns an Echo message.
EchoResponse,
path='echo',
http_method='POST',
name='echo')
def echo(self, request):
logging.info("echo1"+ str(request.content))
output_content = ' '.join([request.content] * request.n)
return EchoResponse(content=output_content)
@endpoints.api(name='echo', version='v2', description='description2')
class EchoApi2(remote.Service):
@endpoints.method(
# This method takes a ResourceContainer defined above.
ECHO_RESOURCE,
# This method returns an Echo message.
EchoResponse,
path='echo',
http_method='POST',
name='echo')
def echo(self, request):
logging.info("echo2" + str(request.content))
output_content = ' '.join([request.content] * request.n)
return EchoResponse(content=output_content)
api = endpoints.api_server([EchoApi, EchoApi2])
如果只有,則表示良好:version ='v1'(EchoApi)
如果出現以下錯誤:添加版本='v2'(EchoApi2)
錯誤代碼:ApiConfigurationError:嘗試使用多個不兼容的類來實現版本2的服務回顯。 有關如何實現多類API的示例,請參見api()的docstring。
謝謝。
這是用於創建由多個類實現的API的正確格式:
import logging
import endpoints
from protorpc import message_types
from protorpc import messages
from protorpc import remote
class EchoRequest(messages.Message):
content = messages.StringField(1)
class EchoResponse(messages.Message):
content = messages.StringField(1)
ECHO_RESOURCE = endpoints.ResourceContainer(
EchoRequest, n=messages.IntegerField(2, default=1))
echo_collection = endpoints.api(name='echo', version='v1', description='description')
@echo_collection.api_class(resource_name='echo1')
class EchoApi1(remote.Service):
@endpoints.method(
# This method takes a ResourceContainer defined above.
ECHO_RESOURCE,
# This method returns an Echo message.
EchoResponse,
path='echo',
http_method='POST',
name='echo')
def echo(self, request):
logging.info("echo1"+ str(request.content))
output_content = ' '.join([request.content] * request.n)
return EchoResponse(content=output_content)
@echo_collection.api_class(resource_name='echo2')
class EchoApi2(remote.Service):
@endpoints.method(
# This method takes a ResourceContainer defined above.
ECHO_RESOURCE,
# This method returns an Echo message.
EchoResponse,
path='echo',
http_method='POST',
name='echo')
def echo(self, request):
logging.info("echo2" + str(request.content))
output_content = ' '.join([request.content] * request.n)
return EchoResponse(content=output_content)
api = endpoints.api_server([echo_collection])
該文檔對此進行了解釋: https : //cloud.google.com/endpoints/docs/frameworks/python/create_api#creating_an_api_implemented_with_multiple_classes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.