什么是node.js http模块的“req.url”的express.js等价物?
使用vanilla node.js的http.createServer时,可以通过req.url获取客户端请求的url。
使用express.js时,响应HTTP GET请求的代码如下所示:
app.get('/', function (req, res) { res.send('Hello World!') })
我的问题是,它需要你有一个单独的app.get服务器上的每一个页面或项目。 如何使用express.js像vanilla node.js服务器来处理由http.createServer生成的callback中的每个获取请求?
你永远不需要使用req.url
。 Express允许你在你的路线中有variables。
app.get('/article/:id', function(req, res) { // req.params.id will be whatever came after /article/ });
你也可以看中并使用正则expression式。
app.get(/\/article(\d+)/, function(req, res) { // req.params[0] will have the digits of /article123 });
如果你真的想要的URL, req.url
仍然存在。 但是,您应该使用路由来处理所有路由逻辑。 我从来没有真正需要使用req.url
。
注册后续处理程序,如快速模块…
app.use(function(req, res, next){ ... YOUR CODE HERE ... })
在你的路线之后这样做…
你好
为了回答具体问题(如标题中所述) ,ExpressJS提供
- req.originalURL ,相当于Node的req.url
- req.baseUrl实际上是由Express装载的path
所以,本质上, Express'req.baseUrl + req.url等同于Node的req.url
另外,Express的路由不要求你明确地设置每个页面的path; 它也接受可以处理特定请求的正则expression式string。
看看Express的路由 ; 它应该对你有巨大的好处。
- angularjs $ cookieStore SyntaxError:JSON.parse:意外字符
- 返回的express err对象不包含err.message
- ExpressJS POST不能logging正文
- 未处理的拒绝TypeError:dbUser.validPassword不是函数Sequelize Node React Passport
- Express路由器
- 使用Mongo Schema和i18n的多语言validation消息
- 在Sails express节点中,如何在请求的页面加载的同时显示广告
- 我应该如何运行Meteor的REST API?
- 当AJAX调用获得404时,Express会返回CORS错误?