Estoy programando el backend de mi aplicación web. Y estoy haciendo la API y necesito poder enviar datos en las URL. Por ejemplo:
www.example.com/posts/123456789En este momento todo lo que tengo es:
www.example.com/posts/?q=123456789Me gustaría saber si podría hacer algo similar a lo que hace el módulo express con los dos puntos para declarar parámetros. Pero quiero hacerlo con el módulo http del nodo porque ya he escrito todo el enrutamiento con él y sería un gran dolor moverme para expresar y tener que memorizar las funciones para ello.
si esto no es posible, hágamelo saber y tendré que ceñirme a la cadena de consulta.
Si entiendo tu pregunta correctamente, harías algo como esto.
Te daré el código completo del servidor, solo pásalo y ejecútalo. Para verlo por ti mismo
Lo que hace este código es, por ejemplo, -> localhost:8080/month?9 cuando pasa esto al navegador, la consola imprimirá el 9
const http = require('http'); const url = require('url'); http.createServer(function (req, res) { const queryObject = url.parse(req.url,true).query; <---- Here is where you "catch" the URI parameters console.log(queryObject); <-- here you display them res.writeHead(200, {'Content-Type': 'text/html'}); res.end('Feel free to add query parameters to the end of the url'); }).listen(8080);Parece que los documentos del módulo HTTP no especifican una forma de hacer esto, que no sea mediante el uso de parámetros de búsqueda .
Sin embargo, en su caso, creo que el mejor curso de acción (si migrar a un marco como express no es una opción) sería deconstruir manualmente la URL usando algo como: const urlSegments = request.url.split('/') y tomando el segmento n-ésimo (que coincide con la ruta que especificó).
Esta es una mala solución a largo plazo, ya que sería bastante difícil de mantener, pero puede hacer el trabajo si es necesario.