2016-11-25 34 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方法語義的理解有點不穩定。 –

相關問題