Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular SPA调用多个API的最佳实践?_Angular_Api_Design Patterns_Architecture_Single Page Application - Fatal编程技术网

Angular SPA调用多个API的最佳实践?

Angular SPA调用多个API的最佳实践?,angular,api,design-patterns,architecture,single-page-application,Angular,Api,Design Patterns,Architecture,Single Page Application,我的团队正试图找出解决以下问题的最佳体系结构。我希望能够找到任何针对我们情况的现有建议,但很难搜索 我们有一个带有SPA、ASP.NET WebAPI后端和数据库的应用程序A 我们还有另一个内部WebAPIB,用于存储和服务文件以及与应用程序无关的元数据B有自己的数据库。这个API也属于我们的团队,但最终会被其他应用程序使用 A有一个特定于A的文档元数据表。这些记录表示A中文件与其他内容的附件,并包含B中文件记录的ID 要列出给定项目的附件,a前端获取a文档记录,然后使用调用a的结果从B获取

我的团队正试图找出解决以下问题的最佳体系结构。我希望能够找到任何针对我们情况的现有建议,但很难搜索

  • 我们有一个带有SPA、ASP.NET WebAPI后端和数据库的应用程序A

  • 我们还有另一个内部WebAPIB,用于存储和服务文件以及与应用程序无关的元数据B有自己的数据库。这个API也属于我们的团队,但最终会被其他应用程序使用

A有一个特定于A的文档元数据表。这些记录表示A中文件与其他内容的附件,并包含B中文件记录的ID

要列出给定项目的附件,a前端获取a文档记录,然后使用调用a的结果从B获取其余元数据(文件名、大小等)


我们想通过将上传返回的数据复制到A的元数据中的B来消除第二次调用

因此,我的问题是:

  • 是否有任何理由不复制数据
  • 到目前为止,我在谷歌上搜索它时遇到了麻烦——我觉得我缺少了一些行话或一些术语,这些术语可以满足我的需要。这个特定的体系结构主题是否有一个名称可以帮助我进行搜索

  • 谢谢

    我想我们可以谈谈微服务

    对于数据复制,这取决于您希望如何处理它。您的数据必须始终是最新的

    如果它是一种数据,您可以将数据复制到后端。例如:发票中的一行

    否则,您可以从A后端调用B后端来合并数据,并只向客户端(前端)发送有用的信息

    您的客户端必须只知道一个端点

    因为,如果您有3个具有相同功能的客户端(例如:网站、移动应用程序、tab应用程序)。明天,B发生变化,您必须到处检查前端代码

    然而,如果只有A知道B,则将连接更改为A。一般来说,它对你的客户是透明的


    有人说:

    我正在考虑做一件类似的事情:SPA调用多个自有和/或第三方API,具有多个客户端SPA的潜力

    为此,我将创建一个代理API,负责在适当的时间将调用传递给其他每个API

    (代理API不仅仅是一个代理,因为它可以执行自己的操作——它更像是一个业务层。可以随意调用它。)

    客户端将只与代理api对话,而不了解真正的api

    每个API将只负责适用于该API的数据,但可以根据需要与代理API通信以从其他API获取数据

    例如:客户端C需要从API A1、A2和A3检索和/或存储信息。我们创建代理api P.C向P请求A1和A2的组合数据。P要求A1提供数据,然后要求A2提供数据。P组合数据并将其发送给C。P组合数据而不是C的原因是多个客户端可能需要相同的组合数据

    除非绝对必要,否则我将避免重复数据。您可以将键存储在其他数据存储的表或对象中,但不能存储在数据本身中——否则,如果一个或另一个API出现问题,您将面临脏数据

    如果需要,代理API还可以负责针对每个API进行授权/身份验证


    这样,每个客户端都可以与相同的代理api通信,客户端代码无需更改。

    A和B后端有不同的数据库?是的,我会编辑。它们恰好是dev中的同一个SQL实例,但不一定是在生产环境中。