最近在做一个json api接口,需要匹配/api下的请求。 想要的实现是这样的:
app.path('/api’, function(app){ // 匹配 /api/site_info app.get('/site_info’, someAction); });
7 回复
你需要Express4的Router
var apiRouter = express.Router();
apiRouter.get('/site_info', action);
app.use('/api', apiRouter);
我的方式
app.get "/admin/:module/:action",doAction
doAction = (req,res,next)->
module = req.params.module
action = req.params.action
doSomething(module,action,req,res,next)
当然你可以扩展doSomething的写法
比如你自己的action的方法都是module_action
这样的形式的,而你的模块是yourmodule,则如下
yourmodule[module+"_"+action](req,res,next)
还有更多的扩展写法,把你的api做好配置,放到json中,然后读取json配置文件做调用。
我想知道如果平铺的话,怎么把app传到其他文件去 就是app.get如何直接在controller里直接可以写成app.get 就可以写操作了。
我看到一种方法是在app.js里把app声明成global,有没有什么更好的方法?
其实 你可以用下面这种方式
server.js文件中
app = express()
require('./routes')(app);
在route.coffee文件中
module.exports = (app) ->
require('./routes/api1')(app)
require('./routes/api2')(app)
在routes/api1.coffee文件中
module.exports = (app) ->
app.route('/api1/xxx')
.get(controller1.balabala)
.post(controller1.lalala)
app.route('/api1/ooo')
.get(controller1.adfasfdas)
.post(controller1.ooop)
在routes/api2.coffee文件中
module.exports = (app) ->
app.route('/api2/xxx')
.get(controller2.balabala)
.post(controller2.lalala)
app.route('/api2/ooo')
.get(controller2.adfasfdas)
.post(controller2.ooop)
这样其实也可以很轻松进行接口定义和管理。文档甚至都可以直接写到route对应的js文件里面