Express.js的路径网址包含“?”有问题

时间:2019-07-30 21:52:25

标签: javascript html forms express form-submit

Express.js在路径URL中不使用?

我该如何解决这个问题?

当我点击“提交”按钮时,我得到了:

http://localhost:1000/register?username=test&password=test123

但是,它与:

http://localhost:1000/register

我已经搜索了很多有关如何使用URL路径中的?解决问题的方法。并且有很多答案。但是我对Express和JavaScript仅有的了解。所以我需要一个简单的答案

我需要对<form></form>元素做些什么?还是我必须修正使用app.get();方法的方式?

Express服务器

app.get('/register?username=:username&password=:password', function(req, res) {
    console.log('/register=?');
});

app.get('/register', function(req, res) {
    console.log('/register);
});

HTML

<!DOCTYPE html>
<html lang="en">
    <body>
        <div class="content">
            <div class="register">
                <h1>Register</h1>
                <form runat="server">
                    <label for="username">Username</label>
                    <input type="text" name="username" />
                    <label for="password">Password</label>
                    <input type="password" name="password" />
                    <input type="submit" value="Submit" />
                </form>
            </div>
        </div>
    </body>
</html>

1 个答案:

答案 0 :(得分:4)

您可以通过req.query属性访问查询字符串参数,例如:

app.get('/register', function(req, res) {
    console.log(req.query); // { username : 'test', password: 'test123' }
    console.log('/register);
});

从文档中:

  

此属性是一个对象,其中包含路由中每个查询字符串参数的属性。如果没有查询字符串,则为空对象{}

请参阅:https://expressjs.com/en/api.html#req.query

您也可以在服务器端代码中删除您似乎也尝试使用req.params的第一个处理程序。

req.params可以在路由处理程序中像这样使用:

api/:api_version/songs 

然后您的URL可能类似于:

api/v1/songs?artist=abba
// req.params.api_version is ‘v1’  
// req.query.artist is ‘abba’ 

请参阅:https://expressjs.com/en/api.html#req.params