Angular 2:为 api 端点定义全局常量

sah*_*oun 0 api configuration web-services endpoint angular

我是 Angular2 的新手。我想要一个单一的类或一个配置文件,其中包含我可以在所有服务中注入的所有 API 端点(允许参数等在不同的路由中)。在 Angular2 中这样做的最佳方法是什么?我的意思是,我应该像定义服务时那样定义一个 @Injectable 类(然后将它添加到我的服务的提供者中)。

我发现的问题是,当我将我的 api 部署到客户端部分的服务器上时,我必须更改所有以字符串格式调用的端点,因此如果我有许多端点可以使用,这将是浪费时间。

在此示例中,我使用字符串格式的端点调用服务:

getData() {
    return this._http.get('http://localhost:8000/cartography')
      .map(function(res) {
        const jsonArray = res.json();
        const newJsonArr = [];
        for ( let i = 0; i < jsonArray.length; i++) {
          const object = {
            post_name : jsonArray[i].name,
            employment_name : jsonArray[i].employment.name,
            profession_name : jsonArray[i].employment.profession.name,
            family_name : jsonArray[i].employment.profession.family.name
          };
          newJsonArr.push(object);
        }
          return newJsonArr;
      });
  }
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找一种在类或配置文件中将其定义为全局变量的方法。任何帮助请!谢谢 。

Vam*_*shi 6

您可以只拥有一个常量文件。它不是一个特殊的文件,我们可以在任何文件中进行。

url.constants.ts

export const URL1 = "..... " 
export const URL2 = " .... " 
Run Code Online (Sandbox Code Playgroud)

然后您可以在代码中的任何位置访问它们

import { URL1 } from 'url.constants';
Run Code Online (Sandbox Code Playgroud)

或者你可以把它们放在一个 JSON 文件中

它并不简单。你可以在这里看到它是如何完成的https://hackernoon.com/import-json-into-typescript-8d465beded79

正如评论中提到的,它变得更容易了:https : //stackoverflow.com/a/50674344/1195056

更新

将常量放入打字稿文件的另一个优点是:我们可以使用函数。

例如:

export const USER_NOT_FOUND = (user:string)=> `${user} not found ` 
Run Code Online (Sandbox Code Playgroud)

这可以像

const errorMessage = USER_NOT_FOUND(this.user.name);
Run Code Online (Sandbox Code Playgroud)