我正在尝试建立这个简单的CMS与Restfull路由在Express.js中,
它工作得很好。然后我试着把它改小一点,让我的路由更整洁(或者不整齐),我把router.get('/new')路由移到了router.post('/')路由下面,它就不再正常工作了。当我尝试获取/new路由时,请求转到router.get('/')
这是我的app.js的相关部分(去掉了不必要的部分)
var express=require('express'),
blogRoutes =require('./routes/blogs.js'),
app        =express();
app.use('/blogs',blogRoutes);这是我在blogs.js文件中的博客路径(去掉了不必要的部分)
var express = require('express'),
    router  = express.Router();
router.get('/',function(req,res){...});
router.get('/:id',function(req,res){...});
router.post('/',function(req,res){...});
router.get('/new',function(req,res){...});
router.get('/:id/edit',function(req,res){...});
router.put('/:id',function(req,res){...});
router.delete('/:id',function(req,res){...});所以我想知道这是如何工作的,因为我没有发现任何关于路由顺序的有用信息,除了在创建routes.yet之前,网络上的RESTfull路由图像,它确实有任何意义,为什么它不能正确处理它。
发布于 2019-10-10 02:48:56
来自Express docs:
路由将匹配其路径后面紧跟其路径的任何路径,并带有“/”。
例如: app.use("/apple",...)将匹配“/apple”,“/apple/images”,“/apple/images/news”,
诸若此类。
将router.get('/',function(req,res){...});移至底层是一种健康的方法。
如果你把router.get('/:id',function(req,res){...});移到router.get('/new',function(req,res){...});下面,应该可以解决你的问题。把router.get('/:id'放在router.get('/:id/edit'之前是个好主意。
https://stackoverflow.com/questions/58310355
复制相似问题