Así que digamos que tenemos la siguiente url:
http://example.com/shops/map/searchQuiero acceder al segundo segmento (mapa) y comprobar su valor. ¿Cómo puedo lograr esto en Express? ¡Gracias por adelantado!
usted tiene que configurar sus rutas expresas para aceptar segmentos de URL.
app.get('/shops/:type/search', function (req, res) { res.send(req.params) })Para una solicitud como esta http://example.com/shops/map/search
req.params contendrá el segmento de URL obligatorio.
Request URL: http://example.com/shops/map/search req.params: { "type": "map" }Puede utilizar parámetros de ruta con un conjunto constante de valores.
Express usa path-to-regexp para analizar las cadenas que proporciona para las rutas. Ese paquete permite proporcionar un patrón personalizado con un parámetro para limitar los valores que se pueden combinar.
app.get('/shops/:kind(list|map)/search', searchShops); El contenido del paréntesis, (...) , es un patrón RegExp parcial, en este caso equivalente a:
/(?:list|map)/ # within a non-capturing group, match an alternative of either "list" or "map" literally Luego, dentro de searchShops , puede determinar qué valor se dio con req.params :
function searchShops(req, res) { console.log(req.params.kind); // 'list' or 'map' // ... } Alternativamente, puede dejar el parámetro abierto, verificar el valor dentro del controlador e invocar next('route') cuando el valor no sea aceptable:
app.get('/shops/:kind/search', searchShops); var searchKinds = ['list', 'map']; function searchShops(req, res, next) { if (!searchKinds.includes(req.params.kind)) return next('route'); // ... }Puede acceder a los segmentos de URL dividiendo la URL en una matriz. Como esto:
let requestSegments = req.path.split('/');