1

我們試圖使用JsonServiceClient手動構建自動查詢請求。該代碼是對於大多數操作很簡單,但我沒有看到過濾器的應用方式:ServiceStack自動查詢發送過濾器的手動

var client = new JsonServiceClient('https://my-app.azurewebsites.net'); 
var req = new dto.something(); 
req.pageSize = 10; 
req.skip = 0; 
req.take = 10; 

什麼我不知道是如何發送過濾器?

這裏是QueryBase執行:

export class QueryBase { 
    // @DataMember(Order=1) 
    skip: number; 

    // @DataMember(Order=2) 
    take: number; 

    // @DataMember(Order=3) 
    orderBy: string; 

    // @DataMember(Order=4) 
    orderByDesc: string; 

    // @DataMember(Order=5) 
    include: string; 

    // @DataMember(Order=6) 
    fields: string; 

    // @DataMember(Order=7) 
    meta: { [index: string]: string; }; 
} 

最後,是有模ToPostUrl/ToGetUrl爲的JavaScript /打字稿客戶端?

回答

2

查詢服務是在TypeScript JsonServiceClient0.0.23加入可以讓你查詢服務時,添加額外的參數的新支持如:

var request = new dto.MyQuery(); 

client.get(request, {MyField:"TheFilter"}) 
    .then(r => {}); 

這也將相對或絕對讓通話服務URL可選的queryString參數,如:

client.get<Response>("/my-request/foo") 

client.get<Response>("http://example.org/my-request/foo") 

client.get<Response>("/my-request", { arg: "foo"}) 

ServiceStack只能生成類型化PROPERT爲Explicit Conditions on your AutoQuery Request DTO

有沒有ToPostUrl/ToGetUrl相當於在JavaScript /打字稿,但也有一些URL helpers in ss-utils它可以幫助創建URL,如:

var url = $.ss.createUrl("https://my-app.azurewebsites.net/myquery", 
    {pageSize:10,take:10,MyField:"TheFilter"}); 

$.getJSON(url, function(r) { 
    console.log(r.Results); 
}); 

類似網址助手也都在servicestack-client NPM封裝,如:

import { combinePaths, nameof, appendQueryString } from 'servicestack-client'; 

let baseUrl = "https://my-app.azurewebsites.net"; 
let requestDto = new MyQuery(); 
requestDto.take = 10; 

let pathInfo = combinePaths(baseUrl, "json", "reply", nameof(requestDto)); 
let url = appendQueryString(pathInfo, requestDto); 
+0

你是說JsonServiceClient不適合發送autoqueries嗎?事情是能夠使用打字稿創建查詢請求而不是使用絃樂網址是非常好的。 – lucuma

+0

@lucuma它用於發送類型化請求DTO,如果您在請求DTO中添加屬性,它們將出現在生成的TypeScript DTO中。 – mythz

+0

我明白你的觀點,只有skip,take,orderby等在查詢庫中,但過濾器不是這樣,我以爲我錯過了一些東西。 – lucuma