使用 .NET Core 将来自第三方 API 的数据集成到本地数据库
Posted
技术标签:
【中文标题】使用 .NET Core 将来自第三方 API 的数据集成到本地数据库【英文标题】:Integrating the data from third parties API to a local database using .NET Core 【发布时间】:2021-02-24 11:20:23 【问题描述】:我的问题是关于干净的架构。我对 .NET Core 很陌生,我的任务是将第三方 API 集成到控制台应用程序中,以便将数据存储在 SQL 数据库中。这两天我一直在研究,我发现了很多关于如何创建存储库服务来查询本地数据库的示例,但是我看不到任何关于如何将来自外部 API 的数据集成到本地数据存储解决方案的不错示例, 在我的例子中是 SQL 数据库。
任何有关如何以干净的方式构建服务的信息都会对我有很大帮助!
【问题讨论】:
【参考方案1】:这基本上归结为您是否需要从 3d 方 API 存储本地数据的问题。您不是该数据的所有者。
在许多情况下,每次需要一些数据时都查询外部 API 会更好。您不知道数据是否会更改以及何时更改。例如。您每次查询天气数据或货币兑换率。外部系统知道如何产生这样的结果,所以每次都要询问系统。通常可以缓存来自 3d 方 API 的数据,具体取决于您的应用程序的需求(您的用户是否需要每次刷新时更新天气或一天一次就足够了,例如在滑雪区的网站上)。
现在可能会出现 3d 派对 API 与您的域松散耦合的情况。例如。您使用单独的 API 来管理智能家居解决方案中的设备。在这种情况下,我们谈论的是微服务架构(Microservices by Fowler 是一个好的开始)。在这种情况下,可以从 3d 方 API 构建数据的本地副本。成像您的服务只对设备更换频率感兴趣。因此,您可以查询设备管理 API 以查找损坏的设备,并将此信息以更适合您的应用程序的形式存储在本地。您获取数据,根据您的需要对其进行重组、存储和使用。
所以基本上和往常一样有如此广泛的问题:这取决于。关于你正在构建什么,基于外部 API 提供什么,你想对查询的数据做什么。
对您的问题进行技术分析:您查询数据,例如通过第三方的 REST。这让你获得了他们的ObjectDto。您处理这些数据。他们的对象可能会改变,你不是合同的所有者。您创建 MyObject,其中包含您需要的数据。您将其保存到您的数据库中(如果需要,可以通过存储库)。您为它和数据库表构建一个实体。当 3d 方 API 更改并返回 TheyObjectDto2 时,您仍然使用 MyObject。对您来说最小的改变是将它们的ObjectDto2 转换为MyObject。您的应用程序继续工作。在第二步中,如果您想要一些关于TheyObjectDto2 的新酷信息,您可以修改您的内部数据结构。
【讨论】:
这是一个很好的解释,非常感谢!以上是关于使用 .NET Core 将来自第三方 API 的数据集成到本地数据库的主要内容,如果未能解决你的问题,请参考以下文章
.Net Core 使用通用第三方用户存储/api 进行身份验证
.Net Core Api 模板 CORS 问题来自 axios
来自静态类的 ASP.NET Core Web API 日志记录
如何使用.Net Core cookie中间件ticketdataformat将Jwt令牌从Api保存到c#中的cookie