微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

axios 发送 404 错误可能的原因或解决方法?

如何解决axios 发送 404 错误可能的原因或解决方法?

嘿,我对 MERN 堆栈非常陌生,我在使用 Axios 和 express 发布数据时遇到了问题。我可能理解错误,但这是我的问题。我在页面上有一个表单,我试图将数据从后端提交到后端,然后我在那里控制台记录它。该页面一个包含 onsubmit 函数的组件,它向 server.js 发送一个 post 请求,然后在 console.logs 中记录它,但是我在提交时遇到了 ERROR 404。应该正确安装依赖

这是我的提交功能

    onSubmit(e) {
        e.preventDefault();
        
        console.log(`Form submitted:`);
        console.log(` ${this.state.searchquery}`);
        
        const newSearchQuery = {
            searchquery: this.state.searchquery,};

        axios.post('http://localhost:3000/',newSearchQuery)
            .then(res => console.log(res.data)).then( 
                (response) => { console.log(response) },(error) => { console.log(error) }
            );;
        
        this.setState({
            searchquery: '',})
    }

这是 server.js 文件

const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const todoRoutes = express.Router();
const PORT = 3000;


app.use(cors());
app.use(bodyParser.json());


todoRoutes.route('/').post(function(req,res) {
    console.log(req.body);
});

app.listen(PORT,function() {
    console.log("Server is running on Port: " + PORT);
});```

解决方法

应用程序未配置为使用路由,这就是它抛出 404 的原因。

在 todoRoutes.Route() 之后使用这一行:

app.use(todoRoutes);

app.use() 用于向主节点应用程序注册中间件。由于您使用的是 router express 中间件,因此您也需要注册它。

编辑:这对我有用。如果您想要完整的代码:

ReactJS:

import React from "react";
import axios from 'axios';

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      searchquery: ''
    };
  }
  handleChange = (e) => {
    this.setState({ searchquery: e.target.value });
  }
  onSubmit = (e) => {
    e.preventDefault();
    
    console.log(`Form submitted:`);
    console.log(` ${this.state.searchquery}`);
    
    const newSearchQuery = {
        searchquery: this.state.searchquery,};

    axios.post('http://localhost:3000/',newSearchQuery)
        .then(res => console.log(res.data)).then( 
            (response) => { console.log(response) },(error) => { console.log(error) }
        );;
    
    this.setState({
        searchquery: '',})
  }
  render() {
    return (<form onSubmit={this.onSubmit}>
      <input type="text" value={this.state.searchquery} name="searchquery" id="searchquery" onChange={this.handleChange} />
      <button type="submit">Submit</button>
    </form>);
  }
}

export default App;

快递代码:

const express = require("express");
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const todoRoutes = express.Router();
const PORT = 3000;


app.use(cors());
app.use(bodyParser.json());


todoRoutes.route('/').post(function(req,res) {
    console.log(req.body);
});

app.use(todoRoutes);

app.listen(PORT,function() {
    console.log("Server is running on Port: " + PORT);
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。