Tag: 路由

在expressjs中间件中修改req.path

我试图做一个中间件从path中删除语言环境string(例如/de/about – > /about ),并使用express。 我试过以下中间件: app.use(function (req, res, next) { var localeMatch = /^\/([az]{2}(?:\-[AZ]{2})?)(\/.+)$/.exec(req.path); if (localeMatch) { req.locale = localeMatch[1]; req.path = localeMatch[2]; } else { req.locale = 'en-GB'; } next(); }); 它不工作,因为req.path是只读的。 我怎样才能做到这一点?

如何定义不包含静态资源的默认路由

我想使用express.js为单页面应用程序(angular度核心)定义一个默认path。 当请求静态文件并且在路由中不存在时会出现问题。 在这种情况下,将返回默认页面内容而不是404状态(未find)。 示例代码: var path = require('path'); var express = require('express'); var app = express(); var router = express.Router(); router.use(express.static(path.join(__dirname, '/scripts'))); router.get('*', function(request, response) { response.sendFile(path.join(__dirname, 'views/index.html')); }); app.use(router); app.listen(80); 是否存在一个很好的解决scheme来排除静态文件的默认路由并正确处理状态404? 将文件URL而不是通配符的正则expression式是一个好方法吗?

Express 4上的app.use('/ api')只呈现页面

我有以下几点: app.js … var api = require('./routes/api'); app.use('/', api); app.use('/api', api); ./routes/api … var router = express.Router(); router.get('/', passport.authenticate('bearer', { session: false }), function (req, res) { res.json({ msg: 'API is running' }); }); 我将如何区分/和/api路线,以便我可以呈现一个页面,如果我在/和只返回JSON,如果我在/api ? 我正在考虑将函数传递给非API路线来呈现JSON响应,另一个函数传递给APIpath来显示JSON响应? 任何其他的方式来做到这一点,或者我只是泛泛而谈? 提前致谢。

使用express.Router()与多个url和可选参数

我遇到麻烦,使用express.Router()的方式,我wan,我不知道我的问题是什么。 我的问题是,当我对url'/ api / zip'或'/ api / zip /'+ zip发出GET请求时,其中zip是一个数字邮政编码,唯一被打的路由是'/',在下面的例子中logging了“$$$$$$$$$$$$”。 当我在results_api.js中取出'/'的路由时,'将其设置为server.js'被logging,但是我没有从results_api.js中得到任何东西。 让我知道如果我需要发布更多的上下文代码。 我正在使用一个Angular前端,但我假设,因为我的请求总是得到server.js(通过'使得server.js被logging'validation),我的问题是在results_api.js。 之前我已经使用过这个路由方法,但是不知道这次是怎么回事。 我如何设法打route.get('/ zip /:zip …? 在我的server.js文件中: var express = require('express'); var routes = express.Router(); //route to index.html var assetFolder = Path.resolve(__dirname, '../client/'); routes.use(express.static(assetFolder)); //api routes routes.use('/api/*', require('./api/results_api.js'), function(){ console.log('made it to server.js')}); 我的results_api.js文件: var router = require('express').Router(); router.get('/', function(req, res){ console.log('$$$$$$$$$$$$$$$') }); […]

拒绝访问nodejs express中的特定目录

我想拒绝公众使用节点快递看到文件在一个特殊的目录下面是代码: app.use(express.static(path.join(__dirname, 'partials'))); app.all('/partials/*', function (req,res, next) { res.status(403).send( { message: 'Access Forbidden' }); next(); }); 如果我路由到localhost / partials,我得到消息“禁止访问”,但不是如果我路由到本地/ partials / files.html 任何build议?

Express.js路由器“catchall”加载索引与任何url参数

我有一个基本的项目与我的根用这个代码中的server.js设置: app.use('/', express.static(__dirname + '/public/')); 此外,我有一个公共文件夹与该目录中的index.html,样式和脚本文件夹。 我希望我的web应用程序发送用户到index.html,无论他们可能有任何url参数。 例如:如果用户试图去localhost:8888 / notarealpage,它仍然加载index.html(没有redirect),所以我仍然可以引用location.href属性中的'notarealpage'。

模块路由在Expess中不起作用

我原本是在一个api.js上写了我的路线,但我觉得有一个更好的方法,并绕过互联网,看看人们如何执行的东西。 我跟着几个教程,并提出了以下布局,其中server.js是我的开球: -app –models –routes —index.js —settings.js —sources.js server.js 我把我的路线发展到设置和来源,在index.js中调用它们,并在server.js中要求。 我希望一切都能正常工作,但是当我testing路由时,没有什么能解决/ settings或/ sources。 我不知道我错过了什么,但是我一直在考虑这个,我认为这可能是一些愚蠢的,我没有得到。 我不知道我错了什么过程的一部分,我一直在看它太久了! 任何帮助表示赞赏,谢谢! server.js var routes = require('./app/routes')(app, express) app.listen(config.port); console.log('Magic happens on port ' + config.port + '!'); index.js module.exports = function(app, express){ require('./settings')(app, express); require('./sources')(app, express); } settings.js(sources.js非常相似,所以为了简洁起见,我会留下这些) var bodyParser = require('body-parser'); var Settings = require('../models/settings'); module.exports = function (app, […]

Express路由 – 未经授权的error handling程序挂起错误路由

我正在使用从教程书中抓取的这段代码。 我实现了护照和应用程序的用户。使用检查UnauthorizedError是教程推荐的方法来检查检查未经授权的访问应用程序的受限制的部分。 每当我input一个错误的url,网站只是挂起,没有error handling,没有消息发送到浏览器。 我昨天花了很多时间检查我的路线,似乎没有明显的问题。 然后今天用一个小的预感,我注意到错误检查Unauthorized error ,瞧,error handling是一切都很好。 任何有关这里发生的事情的build议,以及如何正确实施这个错误检查? 注意:当有一个真正的未经授权的访问一个已知的url良好的路线,这个错误检查确实工作。 但是,即使login,它仍然没有收到错误的url。 app.use('/', routes); app.use('/api', routesApi); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // Catch unauthorised errors app.use(function (err, req, res, next) { if (err.name === […]

快递:如何将请求传递给特定的处理程序?

在我的Express应用程序中all('/', …)根path上有一个all('/', …) 。 在这里,我检查失败标志,并希望将请求传递给next处理程序,或者如果发生错误,就像无法build立数据库连接,或者我想直接将请求传递给/error路由,但是我不不想redirect。 可以将请求直接表示为/error还是必须显式调用该路由的处理程序? app = express() var errors = … app.all('/', (req, res, next) => { if(errors) { // route to /error } else { next() } }) app.get('/error', (req, res, next) => { … })

与节点路由

我想了解如何构build一个Node.js项目。 我跟着我发现做一个聊天应用程序的教程。 服务器端和客户端之间的路由不起作用。 如果你能向我解释为什么,或者可以给我一个很好的参考,以了解它应该如何协同工作? 这是服务器: var http = require('http'); const fs = require('fs'); var Router = require('router') var router = Router(); router.get('/test', function (req, res) { res.setHeader('Content-Type', 'text/plain; charset=utf-8'); res.end('Hello World!'); }) var app = http.createServer(function (request, response) { fs.readFile("public/client.html", 'utf-8', function (error, data) { response.writeHead(200, {'Content-Type': 'text/html'}); response.write(data); response.end(); }); }).listen(1337); var io = […]