路由不像/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