UA-7108554-2

Enter Search Query:

  • 4306
  • Close

Diseño de un API REST (I) – Métodos HTTP

Diseño de un API REST (I) – Métodos HTTP

buy modafinil glasgow En los últimos años es una tendencia muy clara el tema del uso de apis.

isotretinoin ordered without a perscription Hasta en sistemas bancarios, donde he estado prestando servicios de consultoría en los últimos años poco a poco va entrando (depende mucho de la entidad, en una en concreto, ni lo entienden ni lo quieren entender… el problema de que dinosaurios que solo entienden de cobol tomen decisiones técnicas que hipotecan sistemas enteros, pero esa es otra historia).

El tema es que tengo pensado hacer una serie de artículos pequeños hablando de diseño de apis REST, y resumiendo lo poco que he ido aprendiendo con el tiempo. Y para este primer artículo tenía pensado hablar de los métodos o verbos.

Cuando hablamos de verbos REST siempre se habla de idempotencia.

Se dice que un método es idempotente si la ejecución repetida de éste con los mismos parámetros, produce el mismo resultado.

Esta propiedad permite repetir con seguridad la misma acción, sabiendo que no se van a duplicar las ejecuciones.

Si se produce un problema de comunicación, y no conocemos el resultado del último método ejecutado, un método idempotente nos permite recuperarnos de este problema, volviendo a enviar la petición, y no duplicando los recursos en el servidor.

Los métodos HTTP más usados son:

  • GET: Es idempotente. Lee el estado del recurso.
  • HEAD: Es idempotente. Lee el estado del recurso, pero solo devuelve las cabeceras.
  • PUT: Es idempotente. Actualiza o crea un recurso.
  • DELETE: Es idempotente. Eliminar un recurso.
  • POST: No es idempotente. Ejecuta una acción genérica no idempotente
  • OPTIONS: Es idempotente. Nos dice que métodos tiene disponibles un recurso

Su uso es bastante explicativo, pero hay un problema recurrente cuando se diseña un api REST… ¿Cual es la diferencia entre un PUT y un POST? La diferencia es bastante sencilla: el put es idempotente, esto es SIEMPRE devuelve el mismo resultado. Si damos de alta un recurso y repetimos la misma petición, no se dan de alta dos recursos. El POST sin embargo, no es idempotente. Sirve para ejecutar acciones que no siempre producen el mismo resultado.

 

Este es un primer acercamiento… en los siguientes artículos volveremos a estos temas, porque, aunque parece simple, puede ser bastante complejo.

15/07/2014

Related Posts

Daycares