Axios удаляет некоторые биты URL-адреса

Я проверяю код (написанный кем-то другим), который выполняет простые запросы GET и POST к серверу с использованием axios.

Вроде все работает нормально, кроме единственного запроса к серверу.

Делая следующий запрос,

url = 'api/items';

axios.get(url).then(res => {
  // do some work
});

Некоторые биты URL-адреса по какой-то причине удаляются.

Вышеупомянутый запрос должен быть отправлен на

https://test.com/aaa/bbb/api/items

вместо

https://test.com/api/items

Все остальные запросы работают нормально (например, https://test.com/aaa/bbb/api/xxx), но не этот.

Что могло быть причиной этого?

У кода установлен baseURL? Были ли у образца страницы, выполняющей get, разные URL-адреса?

Zesky 30.07.2018 05:14

Другие API называются так же?

Nimeshka Srimal 30.07.2018 05:14

@Zesky Базовый URL не задан

d-_-b 30.07.2018 05:15

@NimeshkaSrimal Да, все остальные API вызываются точно так же

d-_-b 30.07.2018 05:16

Вы не устанавливаете базовый URL-адрес в других вызовах API? Я имею ввиду, они все так работают?

Nimeshka Srimal 30.07.2018 05:17

@NimeshkaSrimal Нет, другие работают нормально без настройки почему-то. Разница между этим и другими заключается в том, что он вызывается в модальном окне при нажатии пользователем

d-_-b 30.07.2018 05:21

модальное окно, а другое выполняется на одной странице с тем же URL-адресом?

Zesky 30.07.2018 05:50

@Zesky да, в основном есть индексная страница (index.scala.html), загружаемая в модальном (modal.scala.html) как <div>@modal()</div> внутри индексной страницы. Оба написаны на Twir

d-_-b 30.07.2018 05:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
363
2

Ответы 2

Вы можете использовать что-то вроде этого

axios.defaults.baseURL = 'https://api.example.com/';

тогда ты можешь использовать

url = 'api/items';

axios.get(url).then(res => {
  // do some work
});

и отправьте запрос на https://api.example.com/api/items

Вы можете проверить Global Настройки Axios Config по умолчанию, чтобы получить дополнительную информацию

Как упоминалось в документации, у вас может быть несколько экземпляров и установить конфигурации по умолчанию для каждого экземпляра следующим образом:

// Set config defaults when creating the instance
const instance = axios.create({
  baseURL: 'https://api.example.com'
});

// Alter defaults after instance has been created
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

да, я знаю об этом, но я хочу знать, почему все API работают нормально, кроме одного

d-_-b 30.07.2018 05:29

@d -_- b он может инициализировать каждый экземпляр axios в каждом шаблоне вместо инициализации экземпляра axios для использования во всех шаблонах

DarkSuniuM 30.07.2018 05:31

Оказалось, что путь к API был установлен на /api/items, а не на api/items.

Этот ведущий / был причиной проблемы.

Другие вопросы по теме