V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WildCat
V2EX  ›  Node.js

Express 的 URL 路由,如何匹配某个固定 URL 路径下的请求,比如/api

  •  
  •   WildCat · 2014-05-27 11:46:06 +08:00 via iPhone · 5609 次点击
    这是一个创建于 3837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在做一个json api接口,需要匹配/api下的请求。
    想要的实现是这样的:

    app.path('/api', function(app){
    // 匹配 /api/site_info
    app.get('/site_info', someAction);
    });
    8 条回复    2014-05-27 14:07:46 +08:00
    jasya
        1
    jasya  
       2014-05-27 11:54:51 +08:00
    req.params
    zoowii
        2
    zoowii  
       2014-05-27 11:58:47 +08:00
    没用express
    不过这种东西就算没有,自己封装一层context也可以了吧?
    比如
    var ctx = context(['GET', '/info', ...]);
    app.path('/api', ctx)
    kfll
        3
    kfll  
       2014-05-27 12:08:43 +08:00   ❤️ 2
    // http://expressjs.com/4x/api.html#router

    var router = express.Router()
    router.get('/site_info', someAction);
    router.get('/member_info', yetAnotherAction);

    app.get('/api', router);
    heroicYang
        4
    heroicYang  
       2014-05-27 13:01:38 +08:00
    @kfll 正解
    不过这是 4.x 的 feature,哈哈~
    luin
        5
    luin  
       2014-05-27 13:12:44 +08:00 via iPhone   ❤️ 1
    可以看我写的文章:
    http://zihua.li/2014/05/good-practices-to-structure-an-express-app/

    具体来说可以使用 app.use('/app', subApp);,然后 subApp.get('/site_info' , func)。类似 namespace
    WildCat
        6
    WildCat  
    OP
       2014-05-27 13:26:03 +08:00
    @luin 谢谢,我在用4.x,直接用express.Router()啦。
    luin
        7
    luin  
       2014-05-27 13:43:49 +08:00 via iPhone
    @WildCat 嗯嗯,在 4.0 用 subApp 也有不少优势,比如 app 间隔离,松耦合啥的
    mytharcher
        8
    mytharcher  
       2014-05-27 14:07:46 +08:00
    加上 npm install rainbow 效果更好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3283 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 12:16 · PVG 20:16 · LAX 04:16 · JFK 07:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.