You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中Axios GET请求路径末尾自动加斜杠的移除方法

解决Axios请求路径自动添加末尾斜杠的问题

方法1:自定义参数序列化器(paramsSerializer)

Axios默认的参数序列化逻辑可能会在路径末尾补加斜杠,你可以自定义paramsSerializer来规避这个行为:

import axios from 'axios';

const ping = axios.get('http://127.0.0.1:5000/api/quote', {
  params: {
    id: query.quote_id,
  },
  paramsSerializer: (params) => {
    const paramKeys = Object.keys(params);
    if (paramKeys.length === 0) return '';
    // 手动拼接参数,确保路径末尾无多余斜杠
    return '?' + paramKeys.map(key => `${key}=${encodeURIComponent(params[key])}`).join('&');
  }
}).then((response) => {
  console.log(response.data);
}).catch((e) => {
  console.log(e);
});

方法2:禁用URL规范化(Axios v1.6.0+支持)

Axios默认会对URL做规范化处理(比如自动补全斜杠),你可以创建自定义Axios实例并关闭该功能:

import axios from 'axios';

const apiClient = axios.create({
  normalizeUrl: false, // 禁用URL规范化
});

const ping = apiClient.get('http://127.0.0.1:5000/api/quote', {
  params: {
    id: query.quote_id,
  }
}).then((response) => {
  console.log(response.data);
}).catch((e) => {
  console.log(e);
});

方法3:手动拼接URL参数(临时方案)

如果不想修改Axios配置,也可以直接把参数拼接到URL中,跳过params选项:

import axios from 'axios';

const ping = axios.get(`http://127.0.0.1:5000/api/quote?id=${encodeURIComponent(query.quote_id)}`)
  .then((response) => {
    console.log(response.data);
  }).catch((e) => {
    console.log(e);
  });

补充说明

Postman不会自动修改请求路径格式,因此能正常请求;而Axios的URL规范化逻辑是为了统一格式,但部分后端框架会将带斜杠和不带斜杠的路径视为不同路由,从而返回500错误。

内容的提问来源于stack exchange,提问作者Fredy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:27:34