【问题标题】:Pros / cons browser querying front end server to query separate backend Vs directly query backend浏览器查询前端服务器查询单独后端VS直接查询后端的优缺点
【发布时间】:2017-11-25 05:04:09
【问题描述】:

我有一个用 react 编写的前端和一个连接到数据库以获取数据的后端 API。它们是分开编写的,是不同的服务。

前端服务器有一堆连接到后端 API 的路由,我想知道拥有这些路由而不是直接访问后端 API 的优缺点是什么?

结构示例:

  1. 前端服务器提供 index.html 和 browser.js。
  2. Browser.js 向前端服务器发出 GET、POST、PUT 请求。
  3. 前端服务器接收这些请求,然后向后端 API 发出 GET、POST、PUT 请求。

替代方案:

  1. 前端服务器提供 index.html 和 browser.js。
  2. Browser.js 向后端 API 发出 GET、POST、PUT 请求。

那么,这两种方法的优缺点是什么?我之前的开发人员告诉我,他们是第一种绕过 CORS 并隐藏后端 API 的 IP 地址的方法。但是,在我看来,考虑到前端服务器必须编写和维护的所有额外代码、测试等,以及额外的网络跃点,这似乎不值得麻烦。我想知道我是否错过了其他一些我没有经验看不到的更重要的原因? (我的直觉说用第二种方法)。请注意,我们处于微服务架构中。

【问题讨论】:

    标签: api cross-domain microservices


    【解决方案1】:

    前端服务器接收这些请求,然后向后端 API 发出 GET、POST、PUT 请求。

    您描述的模式称为API Gateway,它具有以下特点:

    好处:

    • 将客户端与应用程序划分为微服务的方式隔离开来
    • 使客户端免于确定服务实例位置的问题
    • 为每个客户端提供最佳 API
    • 减少请求/往返次数。例如,API 网关使客户端能够通过单次往返从多个服务中检索数据。更少的请求也意味着更少的开销并改善了用户体验。 API 网关对于移动应用程序至关重要。
    • 通过将调用多个服务的逻辑从客户端转移到 API 网关来简化客户端
    • 从“标准”公共网络友好 API 协议转换为内部使用的任何协议

    缺点:

    • 复杂性增加 - API 网关是另一个必须开发、部署和管理的移动部件
    • 由于通过 API 网关的额外网络跃点导致响应时间增加 - 但是,对于大多数应用程序而言,额外往返的成本是微不足道的。

    结论:如果您不需要 API Gateway 提供的优势,那么您不应该使用它。

    【讨论】:

    • 我不是在谈论 API 网关模式。我说的是现有的用于绕过 CORS 并混淆后端 API 的前端服务器。例如,在我的示例中,后端 API 在这两种情况下都可以是 API 网关。
    • “Browser.js 向后端 API 发出 GET、POST、PUT 请求”——这看起来不像是网关 API
    • 我明白你在说什么。 “混淆后端 API” - 为什么要混淆该 API?
    • @Contstantin 可能是出于安全原因?完全披露,我之前的开发人员编写了一些有问题的代码,所以我不确定这是否是他们不知道自己在做什么的情况之一,或者他们是否有充分的理由这样做......跨度>
    • 但是即使你隐藏它,前端服务器仍然会将请求转发到那个“坏”的 api。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多