You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ServiceStack JsonServiceClient能否调用服务中[Route]声明的端点?

ServiceStack JsonServiceClient自定义路由调用解答

完全可以直接调用服务中通过[Route]特性声明的自定义端点,JsonServiceClient没有强制限制必须使用/json/reply格式的通用端点,两种常用调用方式如下:

  • 强类型DTO调用(推荐用法)
    你只需要在客户端定义和服务端完全一致的请求DTO类,并且给DTO添加和服务端相同的[Route]特性标记,直接调用JsonServiceClient的对应请求方法即可,框架会自动匹配自定义路由发起请求,无需手动拼接地址。
    示例代码:
    // 客户端声明和服务端一致的请求DTO
    [Route("/hello", "GET")]
    public class Hello : IReturn<HelloResponse>
    {
        public string Name { get; set; }
    }
    
    // 调用逻辑
    var client = new JsonServiceClient("https://你的服务域名");
    var response = await client.GetAsync(new Hello { Name = "Test" });
    
    上述代码发起请求时,会自动访问GET /hello?Name=Test,不会走默认的通用端点。
  • 手动指定路由调用
    如果你不想在客户端声明带[Route]特性的DTO,也可以直接传入自定义路由地址发起请求:
    var response = await client.GetAsync<HelloResponse>("/hello?Name=Test");
    

注意事项

  • 如果自定义路由包含路径参数,例如[Route("/hello/{Name}")],只要请求DTO的属性名和路径参数名一致,JsonServiceClient会自动将属性值填充到路由路径中,无需手动拼接。
  • 只有当请求DTO没有标记任何[Route]特性时,JsonServiceClient才会默认使用/json/reply/<DTO名称>的通用端点格式发起请求。

内容的提问来源于stack exchange,提问作者Carlos Mendes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:45:03