Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在服务器路径中使用冒号和问号获取方法_Node.js_Express - Fatal编程技术网

Node.js 在服务器路径中使用冒号和问号获取方法

Node.js 在服务器路径中使用冒号和问号获取方法,node.js,express,Node.js,Express,后续问题:代码“res.json(false);”在做什么?这不是在页面上打印错误,而不是显示我想要的数据吗 我正在看下面的示例代码。我知道.get(是方法,/:characters?是服务器路径。在这个搜索中,冒号和问号在路径中的意义是什么?问号不应该在字符之前,因为它是一个查询吗 app.get('/:characters?', function (req, res) { var chosen = req.params.characters; if (chosen) {

后续问题:代码“res.json(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);
    }
});
app.get(“/:characters?”,函数(req,res){
选择的变量=请求参数字符;
如果(已选择){
console.log(已选择);
对于(变量i=0;i
:字符实际上不是查询字符串的一部分。它将是url的一部分

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

http://localhost:8080/abcdefg

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

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


对于后续问题,它似乎在通过
characters[I].routeName
characters
变量(我假设是外部定义的)中查找匹配项,并返回找到的值。如果没有找到值,则返回
false
(或者尝试-老实说,如果您尝试使用
res.json(false)
,我不确定express会做什么,因为我不确定
false
是有效的json)。

这是一种正常情况,端点或资源可以包含一个表示

以facebook为例,如果您看到MarkZukerberg的时间线,那么端点或url是

https://www.facebook.com/zuck
如果您看到自己的个人资料,那么zuck将被您的姓名替换。因此,此处的name参数是一个变量

当某个变量是url的一部分时,我们会在该变量前面加上冒号符号以表示语法

如果我们想发送一些其他值作为查询参数,那么我们使用?标记告诉服务器以下字符串将是一个查询参数

?姓名=价值&年龄=12岁&性别=男性

将只返回false,因为响应没有其他内容

最简单的答案:

:XXX
表示它是一个URL参数。(即
req.params.XXX
将获取XXX是什么)

表示该参数是可选的(即客户端用户不需要在url中包含此参数)

因此:


/:characters?
将允许:
/
/yoda
点击该路线。

在这种情况下,问号表示可选参数“characters”。这允许端点具有值或不具有值。然后,他们将针对该参数进行测试,以查看是否包含该参数。如果包含该参数,他们将迭代“characters”对象,并将任何匹配项返回给用户指定的端点。

可能的重复项
res.json(false)