De las tecnologías que he estado viendo últimamente me gustaría empezar por contaros cosas del proyecto Apache CXF. Como bien dice en su "overview":
Apache CXF is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS. These services can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a variety of transports such as HTTP, JMS or JBI.
Y como framework de servicios mi intención era investigar y hacer algún ejemplo de su uso para REST soportando JAX-RS. Espera, espera... cuantas siglas y cosas... ¿podrías hacer un pequeño glosario, por favor? :) ¡Claro! A veces los informáticos, cuando sabemos de que hablamos, nos olvidamos del hecho que la persona que tenemos enfrente es posible acabe de descubrir todo esto y somos propensos a empezar a decir siglas y cosas raras :P
Vamos a hacer un glosario:
REST: Es una técnica que se apoya sobre el protocolo HTTP y sus operaciones (GET, POST, PUT y DELETE) para la exposición de servicios a través de la Web. Se centra en el concepto de "recurso", entendiendo como tal cualquier elemento de información que puede ser accedido mediante un identificador universal (una URI). Es común encontrar nombrado a un sistema REST como RESTful, viene a ser lo mismo, cumple con los principios anteriores. Un ejemplo de URI REST sería:
GET /app/entities/persona/1 => Obtener la entidad persona con el identificador 1
POST /app/entities/persona BODY: {persona: {nombre: paco, apellidos: garcia garcia}} (JSON) => Guardar una nueva entidad persona con sus atributos pasados en el objeto JSON
PUT /app/entities/persona/1 BODY: {persona: {nombre: manolo}} => Actualizar la entidad persona con identificador 1
DELETE /app/entities/persona/1 => Borrar la entidad persona con identificador 1
JAX-RS: Es la API de Java para la implementación de Servicios Web REST. Se basa en el uso de anotaciones (lo veremos en los ejemplos). Existen varias implementaciones como Apache CXF, Jersey de Oracle, RESTEasy de JBOSS, etc. Ha habido un ofrecimiento oficial por parte de @alfredocasado de reproducir los mismos ejemplos que saque yo en Apache CXF con Jersey y, además, hemos metido a @ydarias para que haga lo correspondiente con Spring 3 :D Somos unos liantes!
CRUD: Relacionado con todo lo anterior vais a encontrar este término. Son las siglas de Create, Retrieve, Update and Delete, es decir, Crear, Obtener, Actualizar y Borrar, que es lo mismo que, POST, GET, PUT y DELETE :D Son las cuatro operaciones básicas de persistencia que se realizan con las entidades de una aplicación Web.
Claramente hay más siglas y muchos más conceptos, como JAX-WS para Servicios Web XML, detrás de todo esto pero yo me voy a centrar en los anteriores. Ha salido también el término JSON que, para este post, no necesitamos saber más que es una notación para los objetos que se transfieren entre el cliente y el servidor. En un próximo post hablaré más detalladamente de esto.
Y hasta aquí la parte de teoría. La parte de ejemplos lo voy a dejar para el #kinicast porque me parece mucho mejor mostrar el código en el vídeo según lo voy escribiendo y como se va configurando todo. Por si queréis ver como será la aplicación (muy simple) final aquí os dejo en enlace al proyecto en Google Code. En la aplicación se combinará el uso de Maven y Spring para la configuración del proyecto e integrar las distintas tecnologías.
Os recomiendo echarle un vistazo a la guía de uso de Apache CXF y a los recursos que me ayudaron en la construcción de la aplicación de ejemplo antes que lo veamos en el vídeo:

Buen post Kini!
Porque me pillas en muy mal momento, sino me ofrecería a hacer yo los ejemplos con RESTeasy, que ya me ha tocado pegarme con ello.
Espero ver el kinicast pronto. Pero esta vez habla! :-P
Impaciente estoy por ver el Kinicast
No abuseis del CRUD en los Rest, os recomiendo este artículo:
http://www.jroller.com/rickard/entry/the_domain_model_as_rest
Yo también estoy esperando el Kinicast para saber como montármelo yo en la versión de Spring 3 :-) Buena introducción Kini.
Gracias por los comentarios ;)
La fecha prevista del estreno del #kinicast es el sábado siguiente :P Tengo un catarro que lo flipas y cuando hablo parezco un camionero extremeño que no para de fumar xD
@jerolba gracias por el enlace, parece interesante, lo leeré tranquilamente ;) Todo lo que sea no abusar me parece más que correcto!
Un abrazo
Si no abusaras del tabaco no estarías así.... ya sabes, los excesos son malos :D
Holaa, oye de donde puedo bajar el video!
Saludos