浅析Angular中怎么用 Api 代理
作为前端开发,我们跟后端对接接口是很频繁的事情,但是,我们对接的过程中总是遇到跨域的问题,那么我们如何解决呢?
本文使用 angualr 来讲解代理 api 对接的话题。【相关教程推荐:《angular教程》】
首先我们先来了解下,什么跨域。
跨域
简单理解:当一个请求的协议、域名(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 代理的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 浅析Angular中怎么用 Api 代理
本文地址: https://pptw.com/jishu/593913.html
