角度 HTTP 客户端信息



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

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

此代码取自此堆栈闪电战 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"代码的表示形式有名字吗?谢谢朋友

让我们一步一步来。

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

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

get是一个函数,它将对目标参数 url 执行 http GET 请求

<User[]>是一个泛型类型,它表示 http get 将返回那些可观察的可观察量,它的存在是为了保证类型安全。

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

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

我建议你先熟悉Typescript语法。

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

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

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

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

若要使代码正常工作,需要将空字符串更改为对象。喜欢这个:

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

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

相关内容

最新更新