3.13路径参数
在 URL 路径中替换对象模板字符串。
在 URL 路径中替换对象模板字符串。
HttpRequestBuilder.Get("https://furion.net?id={id}&name={name}") .WithPathParameter("id", 1) // 添加单个参数,{id} 将被替换为 1 .WithPathParameter("name", new[] { "furion", "monksoul" }) // 添加单个参数,{name} 将被替换为 furion,monksoul .WithPathParameters(new Dictionary<string, object?> { }) // 添加多个路径参数 .WithPathParameters(new { id = 1, name = "Furion" }) // 添加多个路径参数,{id} 和 {name} 分表被替换为 1 和 Furion .WithPathParameters(new { id = 1, name = "Furion" }, "user") // 添加带前缀的参数,{user.id} 和 {user.name} 分别被替换为 1 和 FurionHttpRequestBuilder.Get("https://furion.net/{id}/{name?}") // "?" 结尾表示键不存在时替换为空字符串 .WithPathParameter(new { id = 1 });HttpRequestBuilder.Get("https://furion.net/{**path}") // "**" 开头表示不对路径分割符 "/" 转义 .WithPathParameter(new { path = "files/images/photo.jpg" });若路径参数键出现重复,则后设置的键值会覆盖先前的设置。
模板路径语法
模板路径除了直接使用 {key} 外,还支持通过 . 访问对象的属性、嵌套属性,以及通过 [index] 访问集合中的元素。此外,对象类型的属性在未找到同名属性时,会自动尝试将其视为字典,并以路径标识符作为键进行取值(等同于 dict["key"])。
{key}:直接替换对应的值。{key.property}:访问key对象的property属性,或当key为字典时访问键为"property"的值。{key.property.nested}:多级属性/键访问。{list[0]}:访问list集合(数组、List<T>等)中索引为0的元素。{user.names[1]}:先访问user对象的names属性,再取其索引1处的元素。{dic.key}:当dic是字典时(包括Dictionary<string, T>和Hashtable等),dic.key会作为dic["key"]取值。{obj.dictProp.someKey[0].another}:混合使用点号和索引,逐级深入取值。
以上路径都支持在结尾添加 ? 表示值不存在时替换为空字符串,以及添加 ** 前缀表示不对路径分隔符 / 进行转义。
配置参数
除了通过 {key} 模板语法设置路径参数外,框架还提供了配置参数,用于读取配置信息进行替换操作。配置参数使用 [[key]] 语法,例如:
HttpRequestBuilder.Get("https://furion.net?id=[[id]]&name=[[name]]");启用配置参数支持
要在 HttpRemote 服务中启用配置参数支持,请按照以下步骤进行配置:
services.AddHttpRemote(builder => {}) .ConfigureOptions(options => { // 设置用于替换 URL 地址中配置模板参数的提供源 options.Configuration = builder.Configuration; // 若使用 Furion 框架可直接设置 App.Configuration });配置参数的使用
配置参数将从您的配置文件中读取并替换到 URL 中。例如,您的配置文件可能如下所示:
{ "id": 1, "name": "Furion"}配置参数的键支持多种格式语法,以便更灵活地访问配置文件中的值:
[[key]]:直接访问key对应的值。[[key:sub]]:访问key下的sub子项的值。[[key:sub:nest]]:访问key下的sub子项中的nest子项的值。- 备用值查找:
[[notfound | bak]]:如果notfound不存在,则查找bak。[[notfound | bak | other]]:如果notfound和bak都不存在,则查找other。[[notfound | bak:sub | other:sub:nest]]:支持更深层次的备用查找。
- 默认值:
[[notfound || default]]:如果notfound不存在,则使用default作为值。[[notfound | bak | other || 默认值]]:结合备用查找和默认值,确保总有值可用。