服务器路径中带有冒号和问号的 get 方法

Fra*_*ith 6 node.js express

后续问题:代码“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

在这种情况下,问号表示可选参数“字符”。这允许端点可以有值也可以没有值。然后他们会针对该参数进行测试,看看它是否包含在内。如果是这样,它们将迭代“字符”对象并将任何匹配的条目返回到用户指定的端点。


dvl*_*lsg 1

:characters实际上不是查询字符串的一部分。它将成为网址的一部分。

该 url 将类似于以下内容(假设您在本地并在 port 上运行此服务器8080):

http://localhost:8080/abcdefg

在这种情况下,req.params.characters将是'abcdefg'

在我看来,在路线定义中添加明确的问号是一个错误。我不完全确定这个问号的用途是什么。

对于后续问题,它似乎正在做的是在characters变量(我假设是外部定义的)中寻找匹配项characters[i].routeName,并返回找到的值。如果没有找到值,那就是它发送回来的时候false(或者尝试 - 说实话,我不确定如果你尝试使用express会做什么res.json(false),因为我不确定是否false是有效的JSON)。