所以我们假设我们有以下网址:
http://example.com/shops/map/search
Run Code Online (Sandbox Code Playgroud)
我想访问第二个段(map)并检查其值.我如何在Express中实现这一目标?提前致谢!
您必须配置您的快速路线以接受网址段.
app.get('/shops/:type/search', function (req, res) {
res.send(req.params)
})
Run Code Online (Sandbox Code Playgroud)
对于像http://example.com/shops/map/search这样的请求
req.params将包含必需的URL段.
Request URL: http://example.com/shops/map/search
req.params: { "type": "map" }
Run Code Online (Sandbox Code Playgroud)
您可以使用具有一组常量值的路由参数。
Express 用于path-to-regexp解析您为路由提供的字符串。该包允许提供带有参数的自定义模式来限制可以匹配的值。
app.get('/shops/:kind(list|map)/search', searchShops);
Run Code Online (Sandbox Code Playgroud)
括号 的内容(...)是部分 RegExp 模式,在这种情况下相当于:
/(?:list|map)/
# within a non-capturing group, match an alternative of either "list" or "map" literally
Run Code Online (Sandbox Code Playgroud)
然后,在 内searchShops,您可以确定哪个值被赋予了req.params:
function searchShops(req, res) {
console.log(req.params.kind); // 'list' or 'map'
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以让参数保持打开状态,检查处理程序中的值,并next('route')在值不可接受时调用:
app.get('/shops/:kind/search', searchShops);
var searchKinds = ['list', 'map'];
function searchShops(req, res, next) {
if (!searchKinds.includes(req.params.kind)) return next('route');
// ...
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以通过将url拆分为数组来访问url段.像这样:
let requestSegments = req.path.split('/');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3006 次 |
| 最近记录: |