我是学习 mongodb 的新手,当我在“/”上请求 api 时,它工作正常,但对于其他参数,它返回 404 错误
我尝试了双斜杠,所以它可以堆积起来,但没有任何作用
这是主要的index.js
import express, { json } from "express";
import { connectDataBase } from "./Helpers/ConnectDb.js";
import Router from "./Routes/Route.js";
const app = express()
const port = 2629
app.use(json())
connectDataBase()
app.use("/test", Router)
这是 Router.js
import { Router } from "express"
import { getAllUsers, createUser, getUserById, deleteUserById, test } from "../Services/Users.js"
const Route = Router()
Route.post("/test", test)
Route.get("/Users", getAllUsers)
Route.post("/Users", createUser)
Route.get("/Users:id", getUserById)
Route.delete("/Users:id", deleteUserById)
Route.get("/Products", getAllUsers)
Route.get("/Products", getUserById)
Route.post("/Products", createUser)
Route.delete("/Products", deleteUserById)
export default Route
这是 servicers/Users.js
import UserModel from "../Models/Users.js"
export const test = async (req, res) => {
res.send("test")
}
export const getAllUsers = async (req, res) => {
const users = await UserModel.find().select("-password")
res.status(200).send({ data: users })
}
export const createUser = async (req, res) => {
const body = req.body
const user = new UserModel(body)
await user.save()
res.status(201).send({ message: "UserModel Added Successfully" })
}
export const getUserById = async (req, res) => {
const id = req.params.id
const user = await UserModel.findById(id)
res.status(200).send({ data: user })
}
export const deleteUserById = async (req, res) => {
const id = req.params.id
const user = await UserModel.findByIdAndRemove(id)
const users = await UserModel.find()
res.status(200).send({ data: users })
}
我正在使用雷霆客户端进行API点击
我查看了您的代码,看起来您想在从 Thunder 客户端点击时调用 API。
您的 Router.js 文件中有一个愚蠢的错误。
Route.get("/Users:id", getUserById)
Route.delete("/Users:id", deleteUserById)
我假设您想使用某个 ID 动态调用上述两个路由器。
让我们假设用户的 id 是 42iurh239rfbiuf3w,为了让您更好地理解,让我们将 id 硬编码到这些路由器。
因此,路线将是
Route.get("/Users:42iurh239rfbiuf3w", getUserById)
Route.delete("/Users:42iurh239rfbiuf3w", deleteUserById)
Users:42iurh239rfbiuf3w 是一个字符串,所以像路由 /home 一样,我们调用 http://localhost:5000/home 来调用 /home,你应该调用 http://localhost:5000/Users:42iurh239rfbiuf3w 来访问它。
但我们正在尝试访问这些路线,如下所示:
Route.get("/Users/42iurh239rfbiuf3w", getUserById)
Route.delete("/Users/42iurh239rfbiuf3w", deleteUserById)
因此,您需要使其动态化,以便它知道这些是动态路由。您可以按照以下方式进行:
Route.get("/Users/:id", getUserById)
Route.delete("/Users/:id", deleteUserById)
顺便说一下,:id 表示一个人的任何 id。 这样它就可以轻松地向 :id 添加 id,如 /Users/42iurh239rfbiuf3w,
现在,在其他代码正常工作的情况下,您可以不间断地调用路线。
我希望这有帮助。