Я прочитал несколько постов о похожих проблемах, но у меня нет проблемы с CORS (я так не думаю), и моя сетевая вкладка не показывает отправку второго сообщения от клиента
Я использую Axios и реагирую на мой клиентский интерфейс, и после долгого времени отладки я обнаружил, что что-то вызывает мой метод RestController, всегда дважды, всегда около двух минут (это очень длинный ответ согромное количество данных)
В этой вкладке сети эта секунда не отображается POST
, но при запуске из Почтальона все работает как положено (без случайных двойных вызовов)
Axios:
showCurrent = (dateA, dateB) => {
axios.post("api/allData", {
params: {
date_a: dateA,
date_b: dateB
}})
//successful fetch
.then(res => this.setState({
Data: res.data,
isLoading: false,
showPage: true,
home: false,
}))
.catch(function (error) {
//handle errors here
alert(error.message);
})
};
и requestMapping:
@RequestMapping(value = "/allData", method = RequestMethod.POST)
public @ResponseBody String allData(@RequestBody String req) throws JsonProcessingException {
CDate cDate = parseJSON(req);
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(DateRange.getDataForDateRange(date));
}
Класс контроллера также имеет @RestController
аннотацию
Так что, если я запустил запрос менее чем за 2 минуты, все будет в порядке.но дольше этого, и контроллер будет вызываться дважды, и все идет наперекосяк.
Я могу добавить больше кода, если необходимо ... просто не знаю, как это исследовать.
РЕДАКТИРОВАТЬ:
Добавлен Console.log в методе, выполняющем публикацию в клиенте, и в серверной Java.
console.log("whaaat");
axios.post("api/allContracts", {
params: {
date_a: dateA,
date_b: dateB
}}).....
, который будет запускаться только один раз, тогда как публикация будет выполняться дважды, а конечная точка будеттриггер дважды ....
EDIT2:
Что ..... Я также добавил console.log()
к каждому шагу от щелчка, чтобы выбрать.Ничто не сработает дважды, кроме POST
...
, даже с родными реакциями fetch
то же самое произойдет
showCurrent = (dateA, dateB) => {
console.log("whaaat");
let obj = {};
let params = {};
params.date_a = dateA;
params.date_b = dateB;
obj.params = params;
this.setState({isLoading: true});
fetch("api/allData", {
method: 'POST',
body: JSON.stringify(obj),
mode: 'cors',
}).then( res => {
return res.json()
}).then( data => {
this.setState({
Data: data,
isLoading: false,
showPage: true,
home: false,
})
}).catch(error => {
//handle errors here
alert(error.message);
});
РЕДАКТИРОВАТЬ 3: Все еще никакого решения вообще .... Я прочитало предварительном запросе OPTIONS, но на вкладке сети такого нет.Я пытался обработать запрос OPTION в другом RequestMapping, но это срабатывает даже при запуске ....
Пытался установить тайм-аут около 2 миллионов секунд на сервере и клиенте, но этот запрос, похоже, тоже что-то делает .. Почтальон не имеет этой проблемы, все отлично работает