后续问题:代码“res.json(false);”是什么?正在做?那不是在页面上打印出 false 而不是显示我想要的数据吗?
我正在查看以下示例代码。我知道这.get(是方法,/:characters?也是服务器路径。在这次搜索中,路径中的冒号和问号的意义是什么?因为它是一个查询,所以问号不应该出现在字符之前吗?
app.get('/:characters?', function (req, res) {
var chosen = req.params.characters;
if (chosen) {
console.log(chosen);
for (var i = 0; i < characters.length; i++) {
if (chosen === characters[i].routeName) {
res.json(characters[i]);
return;
}
}
res.json(false);
} else {
res.json(characters);
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
在这种情况下,问号表示可选参数“字符”。这允许端点可以有值也可以没有值。然后他们会针对该参数进行测试,看看它是否包含在内。如果是这样,它们将迭代“字符”对象并将任何匹配的条目返回到用户指定的端点。
:characters实际上不是查询字符串的一部分。它将成为网址的一部分。
该 url 将类似于以下内容(假设您在本地并在 port 上运行此服务器8080):
http://localhost:8080/abcdefg
在这种情况下,req.params.characters将是'abcdefg'
在我看来,在路线定义中添加明确的问号是一个错误。我不完全确定这个问号的用途是什么。
对于后续问题,它似乎正在做的是在characters变量(我假设是外部定义的)中寻找匹配项characters[i].routeName,并返回找到的值。如果没有找到值,那就是它发送回来的时候false(或者尝试 - 说实话,我不确定如果你尝试使用express会做什么res.json(false),因为我不确定是否false是有效的JSON)。
| 归档时间: |
|
| 查看次数: |
7358 次 |
| 最近记录: |