无法在nodejs中为我的API设置路由



路由不像/courses那样显示。

这是我的app.js中的代码
const express = require('express');
const connectDB = require('./config/db');
const app = express();
const courses = require("./routes/api/courses");

//connectDB
connectDB();
app.get('/', (req, res) => res.send('Hello world!'));

//using routes
app.use('api/courses', courses);
const port = process.env.PORT || 8082;
app.listen(port, () => console.log(`Server running on port ${port}`));
这是routes/api/courses 中的代码
const express = require('express');
const router = express.Router();
const course = require("../../models/Course");
// @route GET api/courses
// @description Get all courses
// @access Public
router.get('/courses',(req,res)=>{
res.send('Courses are connected!');
})
module.exports = router;

如果它没有显示在localhost/courses的/courses中。这里的输出是:无法获取/courses

我是一个初学者在nodejs express.

您说您希望您的服务器响应:

http://localhost/courses

但是你展示的代码为:

定义了一个路由
http://localhost/api/courses/courses

当你这样做的时候:

app.use('api/courses', courses);

您告诉Express将任何请求发送到路径以/api/courses开头的courses路由器。因此,除非从/api/courses开始,否则不会发送任何内容到该路由。这已经排除了http://localhost/courses

然后,在你的courses路由器中,你这样定义:

router.get('/courses',(req,res)=>{..}

这意味着你定义了一个路由:

http://localhost/api/courses/courses

第一个/api/courses来自注册路由器的app.use()。第二个/courses来自这个路由定义。


如果你想让它响应:

http://localhost/courses

然后,你应该改变这个:

app.use('api/courses', courses);

:

app.use(courses);

这将发送所有可能的路径到课程路由器,在那里检查/courses将产生一个顶级路由处理程序

http://localhost/courses

相关内容

  • 没有找到相关文章

最新更新