更改端点方法的请求消息类不会更新该方法

时间:2014-10-02 08:56:07

标签: python google-app-engine google-cloud-endpoints

我试图更新我之前定义的端点,如下所示:

class NestedMessage(messages.Message):
  foo = messages.StringField(1)

MyResource = endpoints.ResourceContainer(
  message_types.VoidMessage,
  param1=messages.StringField(1, required=True),
  param2=messages.StringField(2),
  param3=messages.MessageField(NestedMessage, 3)
)

class MyApi(remote.Service):
  @endpoints.method(MyResource, messages.VoidMessage,
                    path='new', http_method='POST', name='new')
  def new(self, request):
    # ...
    return messages.VoidMessage

我需要改为使用ResourceContainer改为Message类(不清楚哪一个用于POST方法)。

所以我尝试更新到这个:

# NestedMessage unchanged
class NestedMessage(messages.Message):
  foo = messages.StringField(1)

class MyMessage(messages.Message):
  param1 = messages.StringField(1, required=True)
  param2 = messages.StringField(2)
  param3 = messages.MessageField(NestedMessage, 3)

class MyApi(remote.Service):
  @endpoints.method(MyMessage, messages.VoidMessage,
                    path='new', http_method='POST', name='new')
  def new(self, request):
    # ...
    return messages.VoidMessage

但是当我在/_ah/api/explorer中尝试端点时,它只显示一个空白页面。在我的api上检查discovery.apis.getRest的结果时,新的MyMessage类没有列出,并且由于没有资源容器而导致MyApi.new方法被禁止。

将方法重命名为其他内容(例如MyApi.create)有效,但它会破坏MyApi.new方法。

有没有办法强迫"强迫" Cloud Endpoints更新所有方法?

编辑这是在开发(localhost)和部署时。

编辑2 似乎这个问题只发生在API Explorer中。使用更新的端点(例如通过Javascript库)使用工作的更新方法。

编辑3 不等,我已经更新了两种端点方法。现在,它们都在API Explorer中表现良好,但其中一个似乎仍然被打破了#34;与Javascript客户端库一起使用时(即POST有效负载作为URL查询参数传递,而不是作为JSON主体传递)。另一个表现正常。发生了什么事?

0 个答案:

没有答案