我已经升级到最新的Cloud Endpoints 2.0以及endpoints_proto_datastore到它的最新提交。当我现在尝试生成 API发现文档时,我收到以下错误消息:
Method user.update specifies path parameters but you are not using a ResourceContainer This will fail in future releases; please switch to using ResourceContainer as soon as possible
Method position.update specifies path parameters but you are not using a ResourceContainer This will fail in future releases; please switch to using ResourceContainer as soon as possible
仅有的两个可用端点是以下两个应该更新 User 和 Position 模型的方法:
@User.method(name='user.update', path='users/{id}', http_method='PUT')
def UserUpdate(self, user):
""" Update an user resource. """
user.put()
return user
@Position.method(name='position.update', path='positions/{id}', http_method='PUT')
def PositionUpdate(self, position):
""" Update a position resource. """
position.put()
return position
在升级到 Cloud Endpoints 2.0 之前,一切正常。但是现在,如果我查看生成的发现文件,两个端点的请求中都有一个ProtorpcMessagesCombinedContainer。但是组合容器本身是使用 Position 模型的属性定义的!
这是两种方法请求属性的定义方式:
"request": {
"$ref": "ProtorpcMessagesCombinedContainer",
"parameterName": "resource"
},
这是组合容器的定义(具有 Position 模型的属性):
"ProtorpcMessagesCombinedContainer": {
"id": "ProtorpcMessagesCombinedContainer",
"type": "object",
"properties": {
"displayName": {
"type": "string"
},
"shortName": {
"type": "string"
}
}
},
GAE 和 Cloud Endpoints 2.0 是否有其他人有此问题?
我究竟做错了什么?通常,endpoints-proto-datastore 应该处理 ResourceContainer 和方法路径参数。此外,endpoints-proto-datastore 多年没有更新......我真的不知道错误来自哪里。
谢谢你的帮助!