我在express.js 4.13.3中实现路由安装时遇到了麻烦。
首次安装时,默认情况下会在app.js
var users = require('./routes/users');//get the "users" route
app.use('/users', users);//mount to "/users"
和users.js
路线就像
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.send('respond with a resource');
});
module.exports = router;
不需要定义router.get('/users'...
,因为在app.js file
中挂载会处理这个问题。
但是
当我尝试做同样的事情时
在app.js
中设置了
var upload = require('./routes/upload');
app.get('/upload', upload);//mounting (?)
upload.js
路线
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.render('upload', {title: 'Photo upload'});
});
module.exports = router;
当我访问localhost/users
时,我收到404错误。解决此问题的唯一方法是在upload.js
路由器中定义此router.get('/upload'
而不是此router.get('/'
。但那不会越来越多。
我看到的差异是默认代码使用app.use('/users', users);
,我的代码使用app.get('/upload', upload);
。动词(使用/获取)是导致404的唯一区别吗?如果是这样,为什么?还是别的什么?
由于
答案 0 :(得分:1)
您完全正确的问题是因为这些功能的工作方式不同。以下是这些功能的官方API规范。
https://developers.google.com/drive/android/queries用于安装中间件
app.use
用于定义(仅)HTTP GET请求的一个路由
此示例显示安装在/ user /:id路径上的中间件功能。该函数针对/ user /:id路径上的任何类型的HTTP请求执行。
ActionChains(self.driver).move_to_element(self.driver.find_element_by_name('name')).click().perform()
此示例显示了路由及其处理函数(中间件系统)。该函数处理对/ user /:id路径的GET请求。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/head">
<html>
<body>
<xsl:for-each select="persName[@type='creator']">
<xsl:text>From </xsl:text>
<xsl:value-of select="forename"/>
<xsl:text> to </xsl:text>
<xsl:value-of select="following-sibling::persName[1]/forename"/>
<br/>
<xsl:if test="position() != last()">
<xsl:text>and</xsl:text>
<br/>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>