Angular 中使用 Api 代理

简介: 本文使用 angualr 来讲解代理 api 对接的话题。

image.png


一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情


作为前端开发,我们跟后端对接接口是很频繁的事情,但是,我们对接的过程中总是遇到跨域的问题,那么我们如何解决呢?


本文使用 angualr 来讲解代理 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: () => {}
  })
  // ...
}
复制代码


程序跑起来后,你可以在控制台上看到下面的网络请求:


image.png


Good Job, Bro. 我们能够完美代理后端所给的地址,进行调试了,并且代理可不止代理一个地址哦。读者可以编写多个代理地址验证一下~



相关文章
|
1月前
|
数据采集 监控 安全
各种业务场景调用API代理的API接口教程
API代理的API接口在各种业务场景中具有广泛的应用,本文将介绍哪些业务场景可以使用API代理的API接口,并提供详细的调用教程和代码演示,同时,我们还将讨论在不同场景下使用API代理的API接口所带来的好处。
|
3月前
|
前端开发 API Docker
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
42 0
|
5天前
|
API Go
使用Go语言通过API获取代理IP并使用获取到的代理IP
使用Go语言通过API获取代理IP并使用获取到的代理IP
|
5天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
3月前
|
JavaScript 前端开发 API
在vue中如何获取项目src外层的config目录以及api接口proxy的target代理地址
在vue中如何获取项目src外层的config目录以及api接口proxy的target代理地址
22 0
|
6月前
|
数据采集 监控 安全
各种业务场景调用API代理的API接口教程
API代理的API接口在各种业务场景中具有广泛的应用,本文将介绍哪些业务场景可以使用API代理的API接口,并提供详细的调用教程和代码演示,同时,我们还将讨论在不同场景下使用API代理的API接口所带来的好处。
|
6月前
|
JavaScript API 开发者
什么是 Angular 的 API Extractor?
什么是 Angular 的 API Extractor?
41 0
|
6月前
|
前端开发 API
Angular HTTPClient API 在 SAP 电商云中的使用
Angular HTTPClient API 在 SAP 电商云中的使用
41 0
|
7月前
|
搜索推荐 API 网络架构
关于 Angular Universal 应用执行时需要 Browser API 的问题
关于 Angular Universal 应用执行时需要 Browser API 的问题
40 0
关于 Angular Universal 应用执行时需要 Browser API 的问题
|
8月前
|
应用服务中间件 API nginx
在内网开发中使用Nginx代理来访问钉钉新版服务端API
在内网开发中使用Nginx代理来访问钉钉新版服务端API
479 1

热门文章

最新文章