2016-11-25 70 views
3

我有一个从自定义Google端点获取数据的Dart应用程序。我正在使用discoveryapis_generator生成客户端库。我想发出一个查询类似如下:支持Dart for Google Endpoints中的查询参数?

import endpoints_api.dart as EndpointsApi; 
api = new EndpointsApi.MyApi(); 
api.photos.list(api.Photo.post_id == "post1"); 

endpoints_api.dart是discoveryapis_generator generate.dart生成的客户端库。 MyApi是我的自定义端点API,photos是它的一项服务。 I 认为Photo是一个端点模型类,它有一个实例属性post_id

发出请求会导致错误,导致Photo没有静态获取者“post_id”。这与如何在Python API中查询语法很接近,所以这是我能想到在这里指定它的唯一方法。

我不知道还有什么可能有助于描述我的请求。希望这是不言而喻的。有一个积极的增强描述here,但它似乎指的是限制字段,而不是项目,在响应。

更新:

戳在客户端库的时候,我发现了list方法的源。它看起来像查询参数是受支持的。但在我看来,这不完全正确。正式的参数列表包含API被括号括起来指定的查询参数:

async.Future<PhotoCollection> list({core.String postId, core.String regionId}) {... 

但在方法体中,有以下几点:

if (regionId != null) { 
    _queryParams["region_id"] = [regionId]; 

是在[regionId]括号从提取region参数列表?

我从参数列表中拉出大括号。因为我只指望通过postId查询,这是唯一的参数:

async.Future<PhotoCollection> list(core.String postId) {... 

瞧。我现在可以通过只是在调用中指定的值的参数添加到查询:

api.photos.list("post1"); 

回答

1

如果包裹在大括号的方法的参数,你make them optional

所以你仍然可以使用你的方法与给定的签名。你只需要添加你想传递的参数的名称:

api.photos.list(postId: "post1"); 
+0

看起来像一个赢家。谢谢。很明显,我对Dart方法语义的理解有点不稳定。 –