# node 使用代理访问接口

1、安装 https-proxy-agent 代理库,创建 request.ts文件

import { HttpsProxyAgent, HttpsProxyAgentOptions } from 'https-proxy-agent';
import axios, { AxiosInstance, InternalAxiosRequestConfig } from 'axios';

const proxyOpts: HttpsProxyAgentOptions = {
  host: '127.0.0.1',
  port: 1080,
};

// 拦截请求和响应
function instances(instance: AxiosInstance) {
  // 请求拦截
  instance.interceptors.request.use(
    (config: InternalAxiosRequestConfig) => {
      config.headers.Authorization = 'Bearer ' + OPENAI_API_KEY; // 配置权限token
      config.httpsAgent = new HttpsProxyAgent(proxyOpts); // 配置代理
      return config;
    },
    (error: any) => {
      return Promise.reject(error);
    },
  );
}

// 创建请求
const request = (config: any) => {
  const instance = axios.create(config);
  instances(instance);
  return instance;
};

export default request;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

2、创建 axios.ts 文件

import request from './request'; // 导入刚才创建的 request.ts
const axios = request({ baseURL: '/' });
export default axios;
1
2
3

3、创建 api.ts

import axios from './axios'; // 导入刚才创建的 axios.ts

// 测试接口调用
export const testApi = (data: any) => {
  return axios.request({
    method: 'post',
    url: '/v1/chat/completions',
    data,
  });
};
1
2
3
4
5
6
7
8
9
10

4、使用

import { testApi } from './api';

async function getTestApi() {
  try {
    const response = await testApi({});
    console.log(response.data);
  } catch (e: any) {
    console.error(e.response.data);
  }
}
1
2
3
4
5
6
7
8
9
10
上次更新: 12/7/2023, 6:23:35 PM