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

如何使用Microsoft.AspNetCore.Http.Extensions.QueryBuilder构建查询?

解决.NET Core中QueryBuilder的使用问题

首先得明确:QueryBuilder的作用是帮你生成URL中**?后面的查询字符串部分**,不是用来处理路径参数(比如你例子里的/1)的。你之前的测试代码失败,是因为把路径参数id也当成查询参数传给了QueryBuilder,这就导致生成的URL不符合预期啦。

正确的使用步骤

  • 第一步:先拼接好包含路径参数的基础URL(也就是把/1加到baseUri后面)
  • 第二步:用QueryBuilder构建查询参数(这里是Role=Salesman)
  • 第三步:把生成的查询字符串拼到路径URL后面

修正后的测试代码

using System.Collections.Generic;
using Microsoft.AspNetCore.Http.Extensions;
using Xunit;

public class QueryBuilderTests
{
    [Fact]
    public void ThisTestPassesWithQueryBuilder()
    {
        string baseUri = "http://localhost:13493/api/employees";
        string expected = "http://localhost:13493/api/employees/1?Role=Salesman";

        // 1. 处理路径参数:把id=1拼到基础路径里
        var pathWithId = $"{baseUri}/1";

        // 2. 用QueryBuilder构建查询参数(只放查询参数部分)
        var queryParams = new List<KeyValuePair<string, string>>
        {
            new KeyValuePair<string, string>("Role", "Salesman")
        };
        var queryBuilder = new QueryBuilder(queryParams);
        
        // 3. 拼接路径和查询字符串
        var actualUri = $"{pathWithId}{queryBuilder}";

        Assert.Equal(expected, actualUri);
    }
}

额外说明

  • 如果你的路径参数是动态的,也可以用string.Format或者插值字符串来处理,确保路径部分正确。
  • QueryBuilder会自动帮你处理特殊字符的编码,比如如果参数值里有空格、中文等,它会自动转成URL编码格式,这比自己拼接字符串要安全得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:35:26