我正在为Netflix API编写.NET包装器API.
此时,我可以选择将URL表示为字符串或URI对象.在我看来两者都有一个很好的例子.
因此,如果您使用的是API,您更喜欢哪种?
以下引用来自:Framework Design Guildelines
我强烈推荐这本书给任何在.Net上开发框架的人
使用 System.Uri来表示URI/URL数据.
(对于参数,属性和返回值)System.Uri是一种更安全,更丰富的URI表示方式.使用普通字符串对URI相关数据的广泛操作已被证明会导致许多安全性和正确性问题.
考虑使用System.Uri参数为大多数常用成员提供基于字符串的重载.
如果从用户获取字符串的使用模式足够普遍,则应考虑添加接受字符串的便捷重载.基于字符串的重载应该基于基于Uri的重载来实现.
不要使用接受字符串的版本自动重载所有基于Uri的成员.
通常,基于Uri的API是优选的.基于字符串的重载是最常见场景的助手.因此,您不应自动为基于Uri的成员的所有变体提供基于字符串的重载.有选择性,并为最常用的变体提供这样的帮助.
编辑(评论):该书特别指出:"使用普通字符串对URI相关数据的广泛操作已被证明会导致许多安全性和正确性问题." 我不确定使用System.Uri/UriBuilder需要什么额外的理由.另外,为什么你不想利用框架来读取/操作URI?
在设计将由其他人使用的API时,重要的是使它们平易近人且可靠.出于这个原因,本书确实提到过,你应该为常用功能提供"漂亮"的重载.但是,为了确保正确性,您应该始终使用URI实现底层代码.
你能否澄清一下你的需求,或仅仅使用字符串的原因?