Python,在API中使用重复字段

时间:2015-12-29 07:16:54

标签: python-2.7 api google-cloud-endpoints

我的API如下所示。如果在params中调用API只有一个值(这是一个重复的字段),那么一切都按预期工作。但是如果params拥有多个值,那么我会得到错误:找不到路径的端点。

 1    INPUT = endpoints.ResourceContainer(
 2               params = messages.IntegerField(1, repeated = True, variant = messages.Variant.INT32))
 3
 4    @endpoints.method(INPUT, 
 5                      response_type.CustomResponse,
 6                      path = 'foo/{params}', 
 7                      http_method = 'POST',
 8                      name = 'foo')
 9    def foo(self, request):
10        #foo body is irrelevent
11        return response

我该如何解决这个问题。类似于:path ='foo / {params []}',?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果'params'被期望作为查询字符串的一部分而不是路径,您可以从路径中省略它,例如:

path = 'foo'

path = 'myApi/foo'

example given in the docs使用ResourceContainer作为单个非重复路径参数。鉴于重复属性的性质,它看起来不像您可以将它们用作路径参数,只能查询字符串参数。查询字符串中的重复字段看起来像这样(很容易处理):

POST http://app.appspot.com/_ah/api/myApi/v1/foo?param=bar&param=baz ...

但是路径参数中的重复字段看起来像这样(不是那么多):

POST http://app.appspot.com/_ah/api/myApi/v1/foo/bar/baz....