好的,所以在消化了 URL 和 URI 之间的这一区别这样出色的答案后,我想我现在了解了两者之间的区别。
我现在不明白的是为什么 .NET Framework 有一个 UriBuilder 类,据我所知,它只适用于作为资源定位器的 URI,因此应该正确地称为 UrlBuilder。
有人可以给我一个UriBuilder用于构建不是资源定位器的 URI 的示例吗?或者在 .NET 框架的设计中做出这个决定的一些理由?
好的,所以在消化了 URL 和 URI 之间的这一区别这样出色的答案后,我想我现在了解了两者之间的区别。
我现在不明白的是为什么 .NET Framework 有一个 UriBuilder 类,据我所知,它只适用于作为资源定位器的 URI,因此应该正确地称为 UrlBuilder。
有人可以给我一个UriBuilder用于构建不是资源定位器的 URI 的示例吗?或者在 .NET 框架的设计中做出这个决定的一些理由?
仔细想想,aUriBuilder比 URL Builder 更强大、更广泛。由于每个 URL 都是一个 URI,因此 UriBuilder 本质上是一个 URL Builder。
所以基本上问题是你什么时候可以将 UriBuilder 用于非 URL URI。好吧,我想最好的例子是URN(因为 URL 和 URN 基本上是定位符和名称——URI 的两种分类)。例如,可以使用 URN 来构建 uuid (ie urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66) 或 ISBN (ie ISBN 0-486-27557-4)。这些 URN 不像 URL 那样包含指向资源的位置信息,它们只包含名称或 ID。UriBuilder 不仅可以构建 URL(指向资源),还可以构建 URN。如果您查看Uri.Scheme 属性,您将在 Uri 的可能方案列表中看到 uuid。
此外,.NET 在技术上确实有一个UrlBuilder 类。
Uri _uri = new Uri(URL);
string tURL = _uri.Scheme + "://" + _uri.Host + _uri.LocalPath;
Console.WriteLine("Before: " + tURL);
uri = new UriBuilder(tURL);
Console.WriteLine("After: " + uri.Uri.ToString());