我有一篇axios帖子要发到/users/add,但我一直收到404错误。有人能告诉我我做错了什么吗。
Server.js
app.use("/users", require("./routes/users"));
使得所有用户路由都使用用户控制器
const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
require("dotenv").config();
const app = express();
const PORT = process.env.PORT || 3000;
app.use(cors());
app.use(express.json());
const DATABASE = process.env.MONGODB_URI || "mongodb://localhost/MongoSetup";
mongoose.connect(DATABASE, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
});
mongoose.connection.once("open", () =>
console.log(`--> SERVER.JS: Connected to ${DATABASE}`)
);
mongoose.connection.on("error", (err) => {
console.log(`Mongoose connection err:n${err}`);
});
app.use("/exercises", require("./routes/exercises"));
app.use("/users", require("./routes/users"));
app.listen(PORT, () => {
console.log(`--> SERVER.JS: Server Running: http://localhost:3000/`);
});
路由/用户.js
router.route("/add").post((req, res)
应该为用户设置路线/添加
const router = require("express").Router();
let User = require("../models/user.model");
router.route("/").get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json("Error: " + err));
});
router.route("/add").post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json("User Added!"))
.catch(err => res.status(400).json("Error: " + err));
});
module.exports = router;
创建user.component.js
axios.post("/users/add", user)
应将新用户发送到/users/添加
import React, { Component } from "react";
import axios from "axios";
export default class CreateUser extends Component {
state = {
username: "",
};
handleInputChange = (event) => {
const { name, value } = event.target;
this.setState({
[name]: value,
});
};
handleSubmit = (event) => {
event.preventDefault();
const user = {
username: this.state.username
}
console.log(user);
axios.post("/users/add", user)
.then(res => console.log(res.data));
this.setState({
username: ""
})
};
render() {
return (
<div>
<h3>Create New User</h3>
<form onSubmit={this.handleSubmit}>
<div className="form-group">
<label>Username: </label>
<input
required
name="username"
className="form-control"
value={this.state.username}
onChange={this.handleInputChange}
/>
</div>
<div className="form-group">
<input type="submit" value="Create User" className="btn btn-primary" />
</div>
</form>
</div>
);
}
}
您只需要创建一次express路由器实例,并在所有路由器(users
和exercises
(中使用它。
为路由工厂创建文件
const usersRoutes = require('../usersRoutes');
const exercisesRoutes = require('../exercisesRoutes');
const routerWapper = (router) => {
usersRoutes(router)
exercisesRoutes(router)
return router
};
module.exports = routerWapper;
app.js
...
const express = require("express");
const app = express();
const router = app.router();
...
app.use('/', () => routerWapper(router));
...
用户路线
const userRoutes = (router) => {
router.get("/users").get((req, res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json("Error: " + err));
});
router.get("/users/add").post((req, res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.json("User Added!"))
.catch(err => res.status(400).json("Error: " + err));
});
};
锻炼路线
const exercisesRoutes = (router) => {
router.get("/exercises").get((req, res) => {
User.find()
.then(users => res.json(exercises))
.catch(err => res.status(400).json("Error: " + err));
});
};