#javascript #reactjs #axios
#javascript #reactjs #axios
Вопрос:
Я озадачен тем, что я делаю неправильно в своем коде. Вызов GET разрешается, но когда я пытаюсь выполнить вызов POST на тот же сервер, я получаю сообщение об ошибке. Моя конечная точка POST отлично работает с Postman.
apiConnection.js
function get(data){
return axios.get("http://localhost:8080/api/questions",
{
params:data.payload
}, {
headers: {
'accept': 'application/json',
}
})
}
function post(data){
console.log(data.payload) //my payload is received here
return axios.post("http://localhost:8080/api/answer", {
params:data.payload
}, {
headers: {
'accept': 'application/json',
}
}
)
}
export { get, post }
Вот ошибка, которую я получаю в консоли
И вот как я делаю вызов в react
index.js
GET (получает ответ нормально)
import { get, post } from "apiConnection.js"
...
componentDidMount(){
const data = {
payload: {
linkId: getSlug()
}
}
get(data).then((result) => {
this.setState({reportId: result.data.report.id});
})
}
POST (выдает ошибку)
vote(userVote){
const data = {
payload: {
reportId: this.state.reportId,
}
}
post(data).then((result)=>{
this.state.questions[this.state.currentQuestion].vote = userVote
});
}
Комментарии:
1. axios.post() вам нужно отправить тело / данные вместо параметров, это может быть проблемой
2. К сожалению, это не проблема. Изначально я пытался
return axios.post("http://endpoint", data.payload)
, и это тоже не сработало.3. Используете ли вы webpack? Попробуйте установить для devtool значение ‘inline-source-map’, Чтобы получить более точное сообщение об ошибке, с каким файлом произошла ошибка и т. Д., А не только из bundle.js . Вы знаете, где
parsed
предполагается определить?4. @Sandsten спасибо за предложение. Я попробовал это, и я получил сообщение об ошибке,
isURLSameOrigin.js:57
что привело меня к поиску ответов на этот вопрос. Это ни к чему меня не привело. В любом случае я обнаружил ошибку, о которой я написал в ответе ниже. Спасибо за вашу помощь.
Ответ №1:
Я нашел виновника проблемы, но если кто-то может добавить больше информации об этом, это может быть полезно для других.
В моем вопросе для краткости я изменил URL-адрес запроса с импортированных констант на жестко закодированные ссылки.
В моем коде у меня есть переменная как для GET, так и для POST
return axios.post(apiEndpoints[data.ep], data.payload)
Я импортирую переменные конечной точки следующим образом
import * as apiEndpoints from './apiEndpoints';
apiEndpoints.js
const server = 'http://localhost:8080/'
const api_version = 'api/'
const base_url = server api_version;
export const EP_QUESTIONS = base_url 'questions';
export const EP_ANSWER = base_url 'answer';
По какой-то неизвестной причине EP_ANSWER
выдает ошибку, хотя я не делаю опечатку при определении data.ep
( data.ep
имеет EP_ANSWER
, который
Я проверял миллион раз)
Решение состояло в том, чтобы просто изменить EP_ANSWER
EP_ANS
, и все работало, как ожидалось.
Понятия не имею, почему это так. Это может быть какая-то глобальная переменная или зарезервированное слово.