这篇文章主要介绍“angular中如何用api代理”,在日常操作中,相信很多人在Angular中如何用Api代理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Angular中
这篇文章主要介绍“angular中如何用api代理”,在日常操作中,相信很多人在Angular中如何用Api代理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Angular中如何用Api代理”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
跨域
简单理解:当一个请求的协议、域名(ip地址)、端口
三部分任意一个
当前页面的 url
不同就是跨域。
以我的站点 https://jimmyarea.com
为例:
被请求的地址 | 是否跨域 | 原因 |
---|---|---|
jimmyarea.com | 是 | 协议不同 |
jimmyarea.cn | 是 | 地址不同 |
Https://127.0.0.1:9000 | 是 | 地址和端口号不同 |
代理
这个时候,我们可以通过代理,本地联调不同环境的 api
地址。
首先,我们在项目的根目录上新建一个文件 proxy.conf.JSON
。
我们以接口请求 https://jimmyarea.com/api/public/article?page=-1
为例子:
{
"/api": {
"target": "https://jimmyarea.com/",
"changeOrigin": true,
"secure": false,
"pathRewrite": {
"^/api": "/api"
}
}
}
target
是代理的地址,pathRewrite
是对代理的前缀的重写。
完成了代理文件之后,需要开启代理。我们在 package.json
中添加多一条命令行,表明是开发环境调试使用。
"script": {
"dev": "ng serve --proxy-config=proxy.conf.json",
}
执行 npm run dev
启动项目并带上代理。每次代理文件更改,需要重新启动下该命令行~
验证
我们新建一个 article
的服务,其中 article.service.ts
文件内容如下:
import { Injectable } from '@angular/core';
// http 客户端
import { HttpClient } from '@angular/common/http'
@Injectable({
providedIn: 'root'
})
export class ArticleService {
constructor(
private http: HttpClient
) { }
// 获取文章列表
getArticleList() {
return this.http.get('/api/public/article', {
// 返回类型
responseType: 'json',
// 请求的参数
params: {
page: -1
}
})
}
}
上面的请求,在页面上地址是 http://localhost:4200/api/public/article?page=-1
,其实访问的是地址 https://jimmyarea.com/api/public/article?page=-1
。我们可以在 user-list.component.ts
中调用验证一下:
nGonInit():void {
this.articleService.getArticleList().subscribe({
next: (data: any) => {
console.log(data)
},
error: () => {}
})
// ...
}
程序跑起来后,你可以在控制台上看到下面的网络请求:
Good Job, Bro. 我们能够完美代理后端所给的地址,进行调试了,并且代理可不止代理一个地址哦。
到此,关于“Angular中如何用Api代理”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
--结束END--
本文标题: Angular中如何用Api代理
本文链接: https://lsjlt.com/news/97351.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0