我刚刚开始使用Proto数据存储创建一个API。我想知道是否可以为我的请求和响应使用不同的类,前提是两者都是从EndpointsModel继承的。例如
class my_request(EndpointsModel):
#attributes
class my_response(EndpointsModel):
#different set of attributes
@endpoints.api(name='Blah', version='v1')
class testAPI(remote.Service):
@my_request.method(name='myAPImethod', path='blah',
http_method='POST')
def myAPImethod(self, req):
#do something
resp = my_response()
return resp
这看起来不太管用。有人能告诉我如何创建这样一个方法吗。我能想到的唯一另一种方法是还原到原始的protorpc方法,并指定请求和响应类型作为decorator的一部分。有没有一种方法可以使用proto数据存储来实现这一点? 提前谢谢你。在
您可以应用一种输入/输出字段filtering using ^{} and ^{} in your ^{} 修饰符,但不能指定不同的输入和输出消息类。在
如果需要使用不同的对象,则必须使用标准端点和protoRPC类和装饰器。在
在你的例子中,你有一个非常简单的布局,它并不真的符合被问的问题,或者,IMHO,我认为你实际上想问的是什么。在
我自己正在开发一个更加复杂的端点API,但是它使用两个不同的模型为API调用设计请求和响应对象;但是,它们嵌套在另一个(或多个)中。我在App Engine日志中找到了一个提示,提示我应该使用该方法作为警告:
请注意;ResourceContainers可能非常棘手,需要您将从protorpc导入的
messages.Message
分类。有关ResourceContainers的说明,请参阅thisStackOverflow答案。在以您的示例为基础,我们需要构建资源容器,以复制我们希望返回给被调用方的模型中的内容。在
^{pr2}$如您所见,这比您的简单示例要深入得多。在
加分:使用路径参数
如果您希望接受方法的路径参数,例如假设的用户的id属性(即
path='users/{id}/delete'
),我们将在方法本身前面添加以下块来使用它:注意:注意附加属性},它们允许对有数百个用户的情况下返回的结果进行分页;正是为了这个目的,这些属性经常在模型查询中使用。在
cursor
和{现在,要完成接受路径参数的更改,请替换上面示例中的以下行:
有了这个:
最后,不管是否使用路径参数,此设置允许您在
MyUserResponseMessage
内嵌套一个或多个MySubscriptionResponseMessage
项,以返回被调用方,就像MyUser
模型可能包含多个MySubscription
模型一样。这不需要向api方法添加任何内容,因为它已经是MyUserResponseMessage
中的嵌套项。此外,如果不需要将模型中的项返回给被调用方,则不需要在响应消息中复制这些项。在相关问题 更多 >
编程相关推荐