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

2024-10-04 09:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更新先前定义的端点,如下所示:

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方法)。在

所以我试着更新一下:

^{pr2}$

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

将该方法重命名为其他方法(例如MyApi.create)可以工作,但是它会破坏MyApi.new方法。在

有没有办法“强制”云端点更新所有方法?在

编辑这在开发(本地主机)和部署时都适用。在

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

编辑3不用等,我已经更新了两个端点方法。现在,它们在API浏览器中都表现得很好,但其中一个在Javascript客户端库中使用时似乎仍然“损坏”(即POST有效负载作为URL查询参数传递,而不是作为JSON主体传递)。另一个行为正常。怎么回事?在


Tags: 方法编辑messagenew端点postclassmessages