Todos hoy en día hacen SOA , incluso si algunos realmente no entienden de qué se trata. Entonces lo hacen mal. Usando eso como analogía, sé lo que es REST (o al menos creo que lo hago) y quiero hacer algo de eso. Pero quiero hacerlo bien.
Entonces mi pregunta es ¿cuál es la forma correcta de hacer REST?
rest
soa
resources
implementations
JohnDoDo
fuente
fuente
Respuestas:
Bueno, hay muchas maneras de aprender cómo construir una aplicación web RESTful y no, no hay una forma correcta única. RESTful no es un estándar, pero utiliza un conjunto de estándares (HTTP, URI, Mime Type, ...).
Comience con esto: cómo le expliqué REST a mi esposa
Luego, proceda con esto: RESTful Web Services Cookbook
Y luego haga todo su esfuerzo para desarrollar aplicaciones web porque la mejor manera de aprender es haciendo experimentos y puede aprender mucho de sus errores;)
No se preocupe si sus primeras aplicaciones web no serán completamente RESTful: ¡encontrará la manera de hacerlo!
Entonces, citando a Obi-Wan Kenobi, "¡que la fuerza te acompañe!" ;)
EDITAR
Ok, déjame ser más específico. ¿Quieres hacer una aplicación web RESTful, eh? Bueno, como dije, hay muchas maneras de hacerlo, pero esta es la guía principal.
Definición
REST (Representational State Transfer) es un estilo de arquitectura de software para sistema distribuido (como WWW). No es un estándar, pero utiliza un conjunto de estándares: HTTP, AJAX, HTML, URI, Mime Type, etc. Estamos hablando de la representación de un recurso, no de un recurso en sí mismo. Tomado de 'Cómo le expliqué REST a mi esposa':
Restricciones de la arquitectura
Interfaz uniforme
CRUDO
Ok, vimos que para identificar recursos podemos usar URI, pero necesitamos algo más para las acciones (agregar, modificar, eliminar, etc.): una gran bienvenida a CRUD (Crear, Leer, Actualizar y Eliminar).
Ahora, con respecto a PUT y DELETE, podrían aparecer algunos problemas tecnológicos (los obtendrá con el formulario HTML): a menudo los desarrolladores evitan este problema usando POST para cada solicitud 'PUT' y 'DELETE'. Oficialmente, debes usar PUT y DELETE. Por cierto, haz lo que quieras. Mi experiencia me empuja a usar POST y GET cada vez.
--- La siguiente parte debe usarse pero no es un vínculo de REST: se trata de datos vinculados ---
URI
Resumen URI de detalles técnicos! Diga adiós a URI de la siguiente manera:
¡Re-diseñe URI! Tome el enlace de arriba y cámbielo de la siguiente manera:
Eso está mucho mejor, ¿eh? Se podría hacer por:
Otra cosa: use diferentes URI para representar diferentes recursos:
Presta atención : ¡about.html y about.rdf no son archivos! ¡Podrían ser el resultado de una transformación XSLT!
Negociación de contenido
Si has llegado a este punto, ¡felicidades! Probablemente, esté listo para obtener conceptos más abstractos porque estamos ingresando en los detalles técnicos de la Web Semántica;) Bueno, cuando su cliente quiere un recurso, generalmente realiza la siguiente solicitud:
Pero el servidor no responderá con about.rdf porque tiene un URI diferente ( http://www.example.com/about.rdf ). Entonces, ¡echemos un vistazo al patrón 303 ! El servidor devolverá esto:
Y el cliente seguirá el enlace devuelto de la siguiente manera:
Finalmente, el servidor devolverá el recurso solicitado:
No se preocupe: ¡su aplicación cliente no hará nada de esto! El patrón 303 debe ser realizado por la aplicación del servidor y su navegador hará el resto;)
Conclusión
A menudo la teoría está muy, muy lejos de la práctica. Sí, ahora sabes cómo diseñar y desarrollar una aplicación RESTful, pero la guía anterior es solo una pista. Encontrará su mejor manera de construir aplicaciones web y probablemente no será lo que la teoría quiere. No te importe: D!
Bibliografía
Servicios web RESTful, Sameer Tyagi
Las API REST deben ser impulsadas por hipertexto, Roy Thomas Fielding
Servicios web RESTful: Lo básico, Alex Rodríguez
Flujo de trabajo REST de Webber
fuente
No es necesario un libro bíblico; Tenía las mismas preguntas exactas y aprendí todo lo que necesitaba o quería saber sobre REST leyendo estos tres artículos:
Como leerá en los artículos anteriores, la clave es pensar en las piezas accesibles de su aplicación como "recursos" que se pueden crear, recuperar, actualizar o eliminar utilizando los "verbos" HTTP existentes: OBTENER, PONER, PUBLICAR , BORRAR.
Además, sepa la diferencia entre PUT y POST , y cuándo usarlos. GET, PUT Y DELETE deben ser transacciones idempotentes, POST no.
Además, haga un uso adecuado de los códigos de estado HTTP cuando se comunique con el cliente.
fuente