繁体   English   中英

节点Js表示路由器不工作

[英]Node Js express router not working

js和我正在学习节点js和express,我正在学习快速路由我在rest.js中有以下代码

    const http = require('http');
const express = require('express');
const widgetRouter = require('./rest/widgets');

const app1 = express(); 

const server = http.createServer(app1);



app1.get('/api',widgetRouter);


server.listen(3000,function(){
    console.log('server started in port 3000');

});



const app = express();

我也有widgets.js文件

const express = require('express');

const widgetRouter = express.Router();

widgetRouter.route("/widgets")
    .get(function(req,res){
        res.json({"abc":"hello"});
    })
    .post();

widgetRouter.route("/widgets/:widgetId")
    .get()
    .put()
    .delete();



module.exports = widgetRouter;

但是当我尝试从邮递员那里测试其余的api( http:// localhost:3000 / api / widgets )时,它说不能GET / api / widgets

您已导入并初始化快速模块,但随后启动了带有http模块的服务器。 你应该只用Express:

你也应该使用app.use('/api',widgetRouter)而不是app.get('/api', widgetRouter) ,它是一个快速中间件。

const express = require('express');
const app = express(); 

const widgetRouter = require('./rest/widgets');

app.use('/api', widgetRouter);
app.get('/', function(req, res) {
    res.send('Home');
});

app.listen(3000, function(){
    console.log('server started in port 3000');
});

你也可以试试。

rest.js

const express = require('express');
const http = require('http');
const  router = express.Router();

const app = express();

require('./widgets')(app, router);

app.get('/', function(req, res) {
    res.send('Home');
});

app.listen(3000,function(){
    console.log('server started in port 3000');
});

widgets.js

module.exports = function(app, router){
    router.route("/widgets")
        .get(function(req,res){
            res.json({"abc":"hello"});
        })
        .post();

    router.route("/widgets/:widgetId")
        .get()
        .put()
        .delete();

    app.use('/api', router);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM