Skip to content

Commit b70e6b9

Browse files
committed
优化UriAttribute,当参数为Uri类型时无需二次转换为Uri
1 parent 1860991 commit b70e6b9

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

WebApiClientCore/Attributes/ParameterAttributes/UriAttribute.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ public class UriAttribute : ApiParameterAttribute
1919
/// <returns></returns>
2020
public override Task OnRequestAsync(ApiParameterContext context)
2121
{
22-
var uriString = context.ParameterValue?.ToString();
23-
if (uriString == null)
22+
if (context.ParameterValue == null)
2423
{
2524
throw new ArgumentNullException(context.Parameter.Name);
2625
}
@@ -30,10 +29,14 @@ public override Task OnRequestAsync(ApiParameterContext context)
3029
throw new ApiInvalidConfigException(Resx.invalid_UriAttribute);
3130
}
3231

33-
var relative = new Uri(uriString, UriKind.RelativeOrAbsolute);
34-
if (relative.IsAbsoluteUri == true)
32+
if (!(context.ParameterValue is Uri uri))
3533
{
36-
context.HttpContext.RequestMessage.RequestUri = relative;
34+
uri = new Uri(context.ParameterValue.ToString(), UriKind.RelativeOrAbsolute);
35+
}
36+
37+
if (uri.IsAbsoluteUri == true)
38+
{
39+
context.HttpContext.RequestMessage.RequestUri = uri;
3740
}
3841
else
3942
{
@@ -42,7 +45,7 @@ public override Task OnRequestAsync(ApiParameterContext context)
4245
{
4346
throw new ApiInvalidConfigException(Resx.required_HttpHost);
4447
}
45-
context.HttpContext.RequestMessage.RequestUri = new Uri(baseUri, relative);
48+
context.HttpContext.RequestMessage.RequestUri = new Uri(baseUri, uri);
4649
}
4750
return Task.CompletedTask;
4851
}

0 commit comments

Comments
 (0)