ServiceStack AutoQuery 手动发送过滤器
ServiceStack AutoQuery Send Filter's Manually
我们正在尝试使用 JsonServiceClient 手动构造自动查询请求。对于大多数操作来说,代码非常简单,但我看不到过滤器是如何应用的:
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; };
}
最后,javascript/typescript 客户端是否有类似 ToPostUrl/ToGetUrl 的版本?
在 TypeScript JsonServiceClient 的 0.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 只能为 Explicit Conditions on your AutoQuery Request DTO.
生成类型化属性
JavaScript/TypeScript 中没有 ToPostUrl/ToGetUrl 等价物,但有一些 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);
});
类似的 URL 助手也可以在 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);
我们正在尝试使用 JsonServiceClient 手动构造自动查询请求。对于大多数操作来说,代码非常简单,但我看不到过滤器是如何应用的:
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; };
}
最后,javascript/typescript 客户端是否有类似 ToPostUrl/ToGetUrl 的版本?
在 TypeScript JsonServiceClient 的 0.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 只能为 Explicit Conditions on your AutoQuery Request DTO.
生成类型化属性JavaScript/TypeScript 中没有 ToPostUrl/ToGetUrl 等价物,但有一些 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);
});
类似的 URL 助手也可以在 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);