【问题标题】:Build REST API Endpoint with Angular使用 Angular 构建 REST API 端点
【发布时间】:2022-01-28 22:44:20
【问题描述】:

假设我们有一个列出患者的 Angular 网络应用程序,路径类似于http://localhost:4200/patients

有没有办法通过调用http://localhost:4200/server/api/patients 以 JSON 格式 (application/json) 交付相同的内容(来自完全相同的数据源)?

换句话说,我想用 Angular 构建一个 REST API 端点。

编辑:我的目标是为外部系统提供一种在生产环境中访问真实数据的方法。

【问题讨论】:

  • 你可以在内存中使用 web api。 github.com/angular/in-memory-web-api
  • 您的问题不清楚:您想提供真实数据吗?你想模拟你的数据吗?您想在生产中使用它还是仅用于测试?请确定您的用例和您的预期。
  • @trichetriche:见上面的编辑。
  • Angular 主要用于前端用户界面。还有许多其他技术可以让您实现目标(用于创建 REST API 端点)示例。 .Net 核心。如果您打算编写脚本,请选择 Node.JS。

标签: angular rest


【解决方案1】:

如果您想在前面添加一些字符串,例如“server/api/”,您可以使用环境来执行此操作。

这是你需要的吗?

【讨论】:

    【解决方案2】:

    根据您的编辑:

    是的,你可以。当您为应用程序提供服务时,这在生产模式下可用。

    这不是 Angular 问题,而是服务器问题:您的服务器必须

    1. 提供已构建的 Angular 应用程序
    2. 提供 REST API。

    这在很大程度上取决于您的服务器,因此您应该使用您的服务器作为标签提出一个新问题,并询问如何设置它以同时为多个应用程序提供服务。

    我必须说明这一点,因为很多人不明白,但 Angular 不是用来创建 REST API 的。您将使用您想要的任何其他东西(并且可以做到)构建您的 API,您只需在同一个域上提供它。

    【讨论】:

      【解决方案3】:

      这是不可能的,因为 Angular 中的根组件和子组件是使用最终为 html 的视图模板呈现的, Angular 是 javascript MVC 框架。因此,最终通过 Web Service Api 调用获得的每个数据角度都应该填充到某个组件中。所以最终你将从 angular 得到的 mime 类型是 text/html 。

      Angular 不是为开发 Rest Api 而构建的。如果您只想在 javascript 中编写代码,您可以使用 Node.js。

      点击此链接了解 node.js 中为此目的可用的框架

      Node js Rest Api frameworks

      【讨论】:

        【解决方案4】:

        Angular 应用程序通常完全在浏览器中运行。由于服务器上没有运行任何东西,因此无法将其用于 Web api。

        但是,我在实现一个带有服务器端渲染的小型 Angular Universal 应用程序时遇到了这个问题。在这种情况下,Express 服务器会执行 SSR,我希望它也能处理一些 api 调用。

        server.ts 文件(添加 @nguniversal/express-engine 时自动生成)包含一个注释掉的部分,说明如何执行此操作。

          // Example Express Rest API endpoints
          // server.get('/api/**', (req, res) => { });
        

        为了测试,用类似的东西替换它

          server.get('/api/**', (req, res) => { res.send('Hello!') });
        

        您可以在浏览器中使用http://localhost:4200/api/test 来点击它,或者从角度应用中使用this.http.get('api/test')

        【讨论】:

          猜你喜欢
          • 2021-08-08
          • 1970-01-01
          • 1970-01-01
          • 2015-04-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-25
          • 2016-04-20
          相关资源
          最近更新 更多