gpt4 book ai didi

python - Google Cloud Endpoints V2 多类 API 错误 App Engine 标准

转载 作者:行者123 更新时间:2023-12-01 03:22:39 25 4
gpt4 key购买 nike

错误: ApiConfigurationError:尝试使用多个不兼容的类来实现版本 v2 的服务 echo。有关如何实现多类 API 的示例,请参阅 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))

@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])

只要版本='v1'(EchoApi)就很好

如果添加了 version='v2' (EchoApi2),则会出现错误

错误代码:ApiConfigurationError:尝试使用多个不兼容的类来实现版本 v2 的服务 echo。有关如何实现多类 API 的示例,请参阅 api() 的文档字符串。

谢谢。

最佳答案

这是创建使用多个类实现的 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

关于python - Google Cloud Endpoints V2 多类 API 错误 App Engine 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com