¿Cuál es la diferencia entre URL y URI?
¿Existe alguna diferencia práctica entre URL y URI? ¿Por qué existe confusión entre ambos conceptos? ¿Podemos mejorar nuestros sitios web si entendemos estos conceptos?
En términos prácticos, es muy común que llamemos URL a cualquier recurso en internet (página, sitio web, webservice, imágenes, etc…). Y es que en pocas palabras una URL es el localizador que tienen dichos recursos en la red (hasta acá todo sencillo).
[banner id=”1861″]
Sin embargo, las URI van más allá. Cambiando el concepto de “localizador” a “identificador”, un identificador que no depende de la ubicación física de nuestros recursos.
Por ejemplo, una URL puede ser una página que tengamos publicada:
http://localhost/mi-app/clientes/agregar.aspx
Cuando consumimos una URL de ese modo, sabemos que físicamente debe existir una página hecha en ASP.NET, de lo contrario nos dará error.
Por otro lado, una URI podríamos construirla así:
http://localhost/mi-app/clientes/agregar
A simple vista pareciera que lo único que hicimos fue quitarle la extensión .aspx al final, pero internamente el cambio es más grande. No existirá una página .aspx físicamente, puede que tengamos algo de programación mvc y que a través de un controller mostremos lo que el usuario quiere ver.
Pero, ¿cómo hacer más funcional esto?
Imaginemos que creamos un controller para “clientes”, al mismo le configuramos distintos métodos, uno accesible con POST y otro con GET.
POST http://localhost/mi-app/clientes
GET http://localhost/mi-app/clientes
Podemos programarlo de tal forma que el método POST agregue un nuevo cliente, mientras que el método GET nos devuelva la lista de clientes que tenemos (aquí podemos entrar a un tema de buenas prácticas que hablaré más adelante en otro artículo).
En este caso, podemos ver que nuestro URI está “repetido”, lo único es que se comportará de distinta forma si lo llamamos a través de POST o si lo llamamos a través de GET.
Esto nos puede dar un abanico completo de nuevas opciones y más orden. Por ejemplo: ¿qué tal si quiero ver el estado de cuenta de un cliente?.
Con una URL tendríamos algo como esto:
http://localhost/mi-app/clientes/estado-cuenta.aspx?idcliente=10
En comparación con una URI, en la que tendríamos algo más ordenado y entendible.
http://localhost/mi-app/clientes/1/estado-cuenta
Con la URL tendríamos que tener una página .aspx que lea un archivo PDF del disco duro para poder mostrarlo, en cambio con la URI podríamos ir a buscar el archivo PDF directamente desde nuestro controller, sin pasar por otro archivo fisico (el .aspx).
¿Se ve la diferencia?
Espero haber ayudado a más de alguien a aclarar mejor ambos conceptos, si les gustó este artículo no olviden suscribirse para recibir en su correo electrónico más artículos como éste.
[banner id=”1861″]
Gracias por la publicación
Me aclara la diferencia entre los 2 términos