将 webapi 暴露给第三方
Exposing webapi to third party
不了解我的 DTO(对象 Web 服务 returns 或作为参数)的第三方客户端如何使用我的 api 方法。我需要以某种方式公开我的 DTO 吗?
文档是您的朋友。发布一些说明 DTO 应该是什么的文档。如果您了解您的客户,则可以创建包含适当 DTO 的包。我们为我们的 .NET 客户做到了这一点。我们向 nuget 发布了一个可移植的 class 库,因此这些客户端中的任何一个都可以下载该包并使用它们。但是,我们已经停止了,因为这可能会使客户端应用程序开发人员不堪重负。 IE。假设您有 100 个 DTO,但一个简单的客户端应用实际上只需要其中的 5 个。通过包含该包,现在有如此多的选项,以至于不知道实际使用哪个 DTO 可能会造成混淆,这会导致客户端应用程序可能做的比它应该做的更多。我们喜欢通过只使用它需要的 DTO 来保持我们的客户端应用程序精简。是的,有一点 DTO 定义重复。
另一方面,如果您走包路线,您基本上可以构建一个 SDK 来使用您的 API。你会看到 Microsoft 做了很多这样的事情来帮助解决 Azure 存储或 Azure 服务总线等领域的复杂性。所有这些都有支持 REST APIs,但 SDK 确保它以设计的方式使用,并且可能是最优化的方式。
不了解我的 DTO(对象 Web 服务 returns 或作为参数)的第三方客户端如何使用我的 api 方法。我需要以某种方式公开我的 DTO 吗?
文档是您的朋友。发布一些说明 DTO 应该是什么的文档。如果您了解您的客户,则可以创建包含适当 DTO 的包。我们为我们的 .NET 客户做到了这一点。我们向 nuget 发布了一个可移植的 class 库,因此这些客户端中的任何一个都可以下载该包并使用它们。但是,我们已经停止了,因为这可能会使客户端应用程序开发人员不堪重负。 IE。假设您有 100 个 DTO,但一个简单的客户端应用实际上只需要其中的 5 个。通过包含该包,现在有如此多的选项,以至于不知道实际使用哪个 DTO 可能会造成混淆,这会导致客户端应用程序可能做的比它应该做的更多。我们喜欢通过只使用它需要的 DTO 来保持我们的客户端应用程序精简。是的,有一点 DTO 定义重复。
另一方面,如果您走包路线,您基本上可以构建一个 SDK 来使用您的 API。你会看到 Microsoft 做了很多这样的事情来帮助解决 Azure 存储或 Azure 服务总线等领域的复杂性。所有这些都有支持 REST APIs,但 SDK 确保它以设计的方式使用,并且可能是最优化的方式。