如何传递“?”在使用节点 js 时作为 express 中的路由参数

How to pass a "?" as a routing parameter in express while using node js

我正在使用 express 和 nodejs 为我的大学创建一个博客网站,这可能是一个愚蠢的问题,但我需要一个答案。 从下面这段代码可以看出-

enter code here
cons express = require("express");
.....
.....
app.get("/blog/:title_of_blog", function(request, response){ 
    var title_requested = request.params.title_of_blog;
    console.log(title_requested);
})

在我尝试过的所有情况下它都工作正常,除非用户输入一个字符串作为路由参数,比如“你叫什么名字?”然后它控制台只记录“你叫什么名字”

所以这里排除了一个问号,进一步的过程取决于它应该完全相同,

有什么办法可以解决这个问题吗???

如果您确实需要任何其他信息,请告诉我

因为 express 会理解 ? 用于开始查询字符串。所以通常如果你想把博客标题设为 URL,你可以使用一些库将标题解析为 slug。

在 JavaScript、PHP 和 ASP 中,有些函数可用于 URL 对字符串进行编码。

PHP有rawurlencode()函数,ASP有Server.URLEncode()函数。

在 JavaScript 中,您可以使用 encodeURIComponent() 函数。

source

当你在你的 blog title 上应用编码并通过 URL 变成这样

/blog/what%20is%20your%20name%20%3F

你会得到你想要的确切结果。 :)

在 URL 解析中不允许使用某些字符,例如 ?、@,或者我最近发现即使在存储 cookie 时也是如此,但是有一种简单的方法可以避免这些问题并以所需的方式获取您的字符串

var encodedString = encodeURI(rawString);

上面这行将所有字符(例如@)转换为易于解析的字符串,并且在处理字符串后,只要您需要实际字符串,您只需键入一行即可获取原始字符串

var originalString = decodeURI(enodedString);