如何在使用Flurl构建URL时排除空参数?
Flurl 跳过空参数的实现方案
Flurl 默认不会自动忽略空字符串参数,但可以通过以下方式实现跳过空值的需求:
处理路径段(AppendPathSegment)
AppendPathSegment 会自动忽略 null 值,但不会忽略空字符串。只需将空字符串转为 null 即可:
var res = baseUrl.AppendPathSegment(string.IsNullOrEmpty(a) ? null : a);
处理查询参数(SetQueryParam/SetQueryParams)
单个查询参数
使用 SetQueryParam 的重载,指定 skipNull: true,同时将空字符串转为 null:
// 假设参数名为"b",值为变量b res = res.SetQueryParam("b", string.IsNullOrEmpty(b) ? null : b, skipNull: true);
多个查询参数(对象形式)
如果你的 b 是包含多个键值对的对象,可通过配置 NullValueHandling.Ignore 跳过空值:
var res = baseUrl.AppendPathSegment(string.IsNullOrEmpty(a) ? null : a) .SetQueryParams(b, opts => opts.NullValueHandling = NullValueHandling.Ignore);
这样当 a 或 b 为空字符串时,对应的路径段或查询参数就不会被添加到 URL 中。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

