Google 端点是否支持 Dart 中的查询参数?
Support for query parameters in Dart for Google Endpoints?
我有一个从自定义 Google 端点获取数据的 Dart 应用程序。我正在使用 discoveryapis_generator 生成客户端库。我想发出如下查询:
import endpoints_api.dart as EndpointsApi;
api = new EndpointsApi.MyApi();
api.photos.list(api.Photo.post_id == "post1");
endpoints_api.dart
是discoveryapis_generatorgenerate.dart
生成的客户端库。 MyApi
是我的自定义端点 API,photos
是它的一项服务。我 认为 Photo
是一个端点模型 class,它有一个实例 属性 post_id
.
发出请求导致错误,大意是照片没有静态 getter "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");
如果将方法的参数用大括号括起来,则 make them optional。
所以您仍然可以使用给定签名的方法。您只需添加要传递的参数的名称:
api.photos.list(postId: "post1");
我有一个从自定义 Google 端点获取数据的 Dart 应用程序。我正在使用 discoveryapis_generator 生成客户端库。我想发出如下查询:
import endpoints_api.dart as EndpointsApi;
api = new EndpointsApi.MyApi();
api.photos.list(api.Photo.post_id == "post1");
endpoints_api.dart
是discoveryapis_generatorgenerate.dart
生成的客户端库。 MyApi
是我的自定义端点 API,photos
是它的一项服务。我 认为 Photo
是一个端点模型 class,它有一个实例 属性 post_id
.
发出请求导致错误,大意是照片没有静态 getter "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");
如果将方法的参数用大括号括起来,则 make them optional。
所以您仍然可以使用给定签名的方法。您只需添加要传递的参数的名称:
api.photos.list(postId: "post1");