Saltar al contenido

API REST: ¿por qué usar PUT DELETE POST GET?

Solución:

La idea de REpresentacional State Transfer no se trata de acceder a los datos de la forma más sencilla posible.

Sugirió usar solicitudes de publicación para acceder a JSON, que es una forma perfectamente válida de acceder / manipular datos.

REST es una metodología para significativo acceso de datos. Cuando vea una solicitud en REST, debería ver inmediatamente lo que está sucediendo con los datos.

Por ejemplo:

GET: /cars/make/chevrolet

es probable que devuelva una lista de autos Chevy. Una buena API REST incluso podría incorporar algunas opciones de salida en la cadena de consulta como ?output=json o ?output=html lo que permitiría al usuario decidir en qué formato debe codificarse la información.

Después de pensar un poco sobre cómo incorporar razonablemente la escritura de datos en una API REST, he llegado a la conclusión de que la mejor manera de especificar el tipo de datos explícitamente sería a través de la extensión de archivo ya existente, como .js, .json, .html, o .xml. Si falta una extensión de archivo, el formato predeterminado sería el predeterminado (como JSON); una extensión de archivo que no es compatible podría devolver un 501 Not Implemented código de estado.

Otro ejemplo:

POST: /cars/
{ make:chevrolet, model:malibu, colors:[red, green, blue, grey] }

es probable que cree un nuevo chevy malibu en la base de datos con los colores asociados. yo digo probable ya que la API REST no necesita estar directamente relacionada con la estructura de la base de datos. Es solo una interfaz de enmascaramiento para que los datos verdaderos estén protegidos (piénselo como accesores y mutadores para una estructura de base de datos).

Ahora tenemos que pasar al tema de la idempotencia. Por lo general, REST implementa CRUD sobre HTTP. Usos HTTP GET, PUT, POST y DELETE para las solicitudes.

Una implementación muy simplista de REST podría utilice el siguiente mapeo CRUD:

Create -> Post
Read   -> Get
Update -> Put
Delete -> Delete

Hay un problema con esta implementación: Post se define como un método no idempotente. Esto significa que las llamadas posteriores del mismo método de publicación darán como resultado diferente estados del servidor. Obtener, Poner y Eliminar son idempotentes; lo que significa que llamarlos varias veces debería resultar en un estado de servidor idéntico.

Esto significa que una solicitud como:

Delete: /cars/oldest

en realidad podría implementarse como:

Post: /cars/oldest?action=delete

Mientras que

Delete: /cars/id/123456

resultará en el mismo estado del servidor si lo llama una vez, o si lo llama 1000 veces.

Una mejor manera de manejar la remoción del oldest artículo sería solicitar:

Get: /cars/oldest

y usa el ID de los datos resultantes para hacer un delete solicitud:

Delete: /cars/id/[oldest id]

Un problema con este método sería si otro /cars elemento fue agregado entre cuando /oldest fue solicitado y cuando el delete se emitió.

Ésta es una cuestión de seguridad y mantenibilidad.

métodos seguros

Siempre que sea posible, debe utilizar métodos “seguros” (unidireccionales) como GET y HEAD para limitar la vulnerabilidad potencial.

métodos idempotentes

Siempre que sea posible, debe utilizar métodos ‘idempotentes’ como GET, HEAD, PUT y DELETE, que no pueden tener efectos secundarios y, por lo tanto, son menos propensos a errores / más fáciles de controlar.

Fuente

En resumen, REST enfatiza los sustantivos sobre los verbos. A medida que su API se vuelve más compleja, agrega más cosas, en lugar de más comandos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *