Tengo un diseño de URL RESTFUL como este: GET /street/:streetName/house/:houseNumber o GET /street/:streetName/house/listings . Como puede ver, :streetName y :houseNumber son nombres de recursos. Estoy tratando de extraer las partes estáticas (comunes) de la url para algunas lógicas siguientes, lo que significa que quiero obtener /street/house y /street/house/listings ( borrar todas las partes de recursos en la url ).
Estaba tratando de encontrar una biblioteca JS para esto, pero no encontré ninguna. ¿Algún consejo?
PD: Puedo hacer algunas coincidencias de cadenas para lograr esto, como dividirlas por "/", luego concatenarlas y solo preocuparme por las palabras clave, por lo que puedo ignorar todos los nombres de los recursos. Pero esto no parece robusto.
Suponiendo que tiene una ruta para cada patrón de URL, puede establecer una propiedad adicional req.staticParts en cada middleware:
app.get("/street/:streetName/house/:houseNumber", function(req, res, next) { req.staticParts = "/street/house"; ... }) ... .get("/street/:streetName/house/:houseNumber/listings", function(req, res, next) { req.staticParts = "/street/house/listings"; ... }) .use(function(req, res) { additionalLogic(req.staticParts); });Esto evita operaciones de cadena y es muy explícito, por lo tanto, muy robusto.
Analizar la URL en staticParts sin conocer las rutas es problemático. Por ejemplo, analizar la URL /street/house/25 en función de las palabras clave generaría req.staticParts = "/street/house" , pero no hay una ruta coincidente para ello.