Я не понимаю, почему мой почтовый запрос axios не работает - 404 не найден
import React, {Component} from 'react';
import axios from 'axios';
export default class CreateDog extends Component {
constructor(props){
super(props)
this.state = {
name: '',
activityLevel: '',
description: ''
}
this.newDog = this.newDog.bind(this)
}
newDog() {
var doggy = {
name: this.state.name,
activityLevel: this.state.activityLevel,
description: this.state.description
}
axios.post('http://localhost:3002/api/createdog', doggy)
.then(response => {
console.log("sent successfully")
})
}
render(){
return(
<div>
<div>
<textarea type="text" placeholder="dog breed name" onChange={(e) => this.setState({name: e.target.value})}> </textarea>
<textarea type="text" placeholder="dog breed activity level" onChange={(e) => this.setState({activityLevel: e.target.value})}> </textarea>
<textarea type="text" placeholder="dog breed description" onChange={(e) => this.setState({description: e.target.value})}></textarea>
</div>
<div>
<button onClick={() => this.newDog()}></button>
</div>
</div>
)
}
У меня есть запрос отправки сообщения в функции newDog.
Вот моя конечная точка в узле с массивной строкой соединения.
massive(config.dblink).then(db => {
app.set('db', db)
})
app.post('/api/createdog', dc.createDog);
контроллер:
module.exports = {
createDog: (req, res) => {
const {name, activityLevel, description} = req.body;
req.app.get('db').create_dog([name, activityLevel, description])
.then(dog => {
console.log(dog)
res.status(200).send(dog);
}).catch(err => {
res.status(500).send(err)})
}
}
Запрос SQL
INSERT INTO dogBreed (name, activity_level, description)
VALUES
('English Bulldog', 'super lazy', 'English bulldogs are super lazy but
adorable')
returning *;
Я смотрел на это в течение нескольких дней, и это, кажется, соответствует всем примерам, которым я пытаюсь следовать. Пожалуйста помоги. Извините за перегрузку кода.
Вот ошибка, которую я получаю:
POST http://localhost:3002/api/createdog 404 (Not Found)
1 ответ
Я считаю, что ошибка в том, что вы используете полный URL в этом вызове:
axios.post('http://localhost:3002/api/createdog', doggy)
Вместо этого попробуйте использовать относительный путь:
axios.post('/api/createdog', doggy)
Если это не работает, не забудьте добавить имя проекта до /api
:
axios.post('/projectName/api/createdog', doggy)
Это решило это для меня.
У меня была похожая проблема и после отладки это исправляется добавлением e.preventDefault()
при отправке формы:
handleSubmit = (e) => {
e.preventDefault()
...
}
Я неправильно использовал аксиомы,
axios.get({ url:'' , method:''}).then
Между тем, использовать.get(), если параметры передаются как объекты, является неправильным синтаксисом. так становится
axios({url:'your url' , method:'post'}