从另一个网站 api 调用一个网站 api

Call a web api from another web api

我有一个带有 Web API 界面的 Windows 服务。我使用此服务将数据从一个系统上传到另一个系统。

我的问题是我必须上传数据的另一个系统是 Web API 服务,我不确定制作一个 Web [=30] 是否是个好主意=] 调用以在内部进行另一个 web api 调用。也许我可以不使用 Windows 服务直接将数据上传到那个 Web API 系统。

此 Windows 服务存在是因为要上传数据的程序不需要知道我将把数据上传到哪里。在 Windows 服务上我可以将 web api 更改为存储过程以通过配置上传数据。我正在尝试创建一个解耦系统。注意:存储过程会将数据上传到与 Web API 系统中使用的数据库不同的数据库。

但如果 Windows 服务具有与具有 API 接口的其他系统相同的 API 接口,我可以创建一个解耦系统。在我要上传的程序中,我将 url 从 Windows 服务更改为 Web API 系统。

你觉得这个设计怎么样?当我可以直接调用它时,从网络 api 调用网络 api 是个好主意吗?

这取决于您的目的,从网络调用 wep api api 通常在以下情况下使用:
- 你需要避免跨域
- 需要适配一些界面又不想改变原来的界面
- 您想在执行原始 API

之前执行更多操作

你的情况,这样做是可以的。

What do you think about this design? Is it a good idea call a web api from a web api when I can call it directly?

它被称为服务代理,或网关,或门面。不确定原来的名字是什么以及谁拥有它,但使用它并没有错。事实上,将目标服务隐藏在代理后面是很常见的。如果需要,可以稍后添加其他功能。例如,您可以在不影响现有消费者的情况下引入重试逻辑、缓存、负载平衡、新服务调用、自定义错误处理,甚至新技术。基本上,这是维护服务版本控制的正确方法。如果您公开 /api/v1/upload 并决定引入带有附加字段 A-Z 的 /api/v2/upload,您可以将 v1 隐藏在 v2 后面并发送默认值而不是 A-Z。我并不是说这是好的设计,但我相信你已经看过了。将 async API 隐藏在 sync API 后面是另一个例子,虽然不是很好。