【问题标题】:Best way to call Api from Web Api Project从 Web Api Project 调用 Api 的最佳方式
【发布时间】:2021-01-27 03:10:26
【问题描述】:

我有一个 .NET Core 项目,我需要在其中创建一个 API,该 API 将调用另一个 API(在该项目之外)。
我遇到了一个问题,因为我不想从控制器进行外部 API 调用,因为据我所知 - 控制器应该只从 API 调用并重新路由数据。
我的 API 的任务是对用户进行身份验证和授权,如果他有权限 - 调用外部 API。
我考虑过创建一个调用外部 API 的服务,但我不确定将这个逻辑保留在同一个 Web-API 项目中是否是个好主意。
这样做的最佳选择是什么 - 创建一个库或其他东西来进行外部 API 调用? 我附上了一个方案来说明我的意思。

【问题讨论】:

  • 它不必是一个库,您可以为该 API 制作一个包装器或层。

标签: .net rest asp.net-core asp.net-web-api


【解决方案1】:

我认为你可以务实。为什么直接从您的 API 调用外部 API 会出现问题?我们遗漏了一些可能使这个问题变得有趣的细节。此外,对于软件工程论坛来说可能会更好。

你有几个选择:

  • 直接从客户端调用外部API。如果需要额外的服务器端进程,这可能不是一个选项。

  • 直接从您的 API 项目调用外部 API。

包装库只是做了另一层间接,我不确定你是否会从中受益。如果您担心保持代码干净,请考虑使用 Mediatr 之类的东西,这样您的控制器类就不会被代码弄得乱七八糟。

【讨论】:

  • 我的 API 的任务是对用户进行身份验证和授权,如果他有权限 - 调用外部 API。我考虑过创建一个调用外部 API 的服务,但我不确定将这个逻辑保留在同一个 Web-API 项目中是否是个好主意。
  • 为什么不呢?如果你把它移出那个项目,你只是为自己创造了更多的工作。你认为这会给你带来一些问题吗?如果您将来真的想编写更简洁的代码,请查看 CQS 和 Mediatr。此时,务实并将其保留在同一个项目中可能是值得的。此外,如果这是您应用程序的重要组成部分,您可能还想查看 Polly 的重试策略。 github.com/App-vNext/Polly
猜你喜欢
  • 2020-12-13
  • 2022-11-04
  • 2019-08-02
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2013-05-02
相关资源
最近更新 更多