角度http客户信息

时间:2019-12-07 16:04:06

标签: angular typescript angular-httpclient

有人可以向我解释这段代码吗?

getAll() {
    return this.http.get<User[]>(`${environment.config.apiUrl}/users`);
}

此代码取自该stackblitz https://stackblitz.com/edit/authenticationdemo?file=src%2Fapp%2Fservices%2Fuser.service.ts的user.service.ts 我知道environment.config是在environment / environment.ts中声明的变量,但我不明白其含义:

export const environment = {
    production: false,
    config: <any> ""
};

我也不明白'apiUrl'是一种什么样的方法,在哪里引用?我正在寻找解释,有关它的文档也很好,我已经尝试过,但是在官方文档中没有找到任何内容。这种“ http.get”代码的表示形式有名称吗?谢谢朋友

2 个答案:

答案 0 :(得分:1)

我建议您先熟悉Typescript语法。

get<User[]>(...)表示此函数的输出为User[]数据类型。尖括号的用法是Typescript中泛型的语法,就像.NET中一样。

`${environment.config.apiUrl}/users`

注意``。这不是字符串语法,而是字符串文字或字符串模板或template literals的语法。所有这些都是纯语法糖。 ${variableName}可以在模板文字中使用,以替换其在最终字符串中的值。在这种情况下,代码打算替换字符串中的environment.config.apiUrl的值。

现在,在environment对象中,config属性当前具有字符串值。 <any> ""语法用于将空字符串的数据类型转换为“ any”。

要使代码正常工作,您需要将空字符串更改为对象。像这样:

config: <any> {
    apiUrl: "http://your-api-domain/"
}

现在,您的apiUrl是在environment.config对象中定义的。注意:不需要<any>类型转换。

答案 1 :(得分:1)

让我们一步一步地了解它。

return this.http.get<User[]>(`${environment.config.apiUrl}/users`);

http是从服务中的angular注入的HttpClient的实例

get是将对目标参数url执行http GET请求的功能

<User[]>是一种泛型类型,它表示http get将返回那些Observable的observable,并且在那里可以确保类型安全。

environment.config的类型为any。这意味着在编译期间,它不是类型安全的,并且您可以访问任何属性,即使它不存在。

访问它时,它是未定义的值,不会引发错误。由于该服务是伪造的,并且价值无关紧要,因此该代码有效