Hola,
Intentaré ser lo mas breve que pueda pero son temas que se han de abrir poco a poco por aqui... Siempre he comentado que es un tema apasionante y un debate muy interesante, a la vez muy amplio y a la vez tan complejo como queráis llegar cada uno de vosotros. Podrás leer especificaciones, normas, entrar en fórums, … y a la vez podrás observar que incluso muchos de los especialistas en este campo ni se ponen de acuerdo (jejeje que raro, no?).
Recuerdo hace años años un post sobre pocket pc en que respondia que microsoft te pegaba un “rollo patarero”… y Antonio contestaba … es el arte de complicarse la vida. Pues eso, a veces queremos ser tan “puristas” que el árbol nos tapa el bosque.
Mi punto de vista es el siguiente: Uno puede intentar comprender el sistema, puede implementarlo siguiendo unas normas o quizás una filosofía, pero al final el objetivo es que funcione correctamente. Puedo saber que según HTTP RFC especifica que un PUT afecta a una representación completa como entidad de la solicitud y PATCH solo parte. Asi suelen funcionar WS (webservices) de google, amazon,… pero hay miles de sitios que tu haces un PUT para modificar parte p.e. de un registro. Y QUE ? Funciona igual y no pasa nada. Que es incorrecto ? Quizás o no, no lo se pero funciona.
Al final lo que debo saber es que si mi sistema se conecta a un WS p.e. de google para q pueda modificar algo del calendario, pues me obligaran a usar PATCH, porque es su diseño (vale y quizás bien hecho según protocolo, un standard, tal y cual).
Pero yo puedo hacer mi WS, que como entendemos da un servicio a alguien y mi API que he diseñado siga un patrón diferente y aquí es donde todos creo que debemos poner el foco. Es el concepto de la API que montemos y diseñemos, voy a poner los VERBOS que me gusten y listos.
Al final el WS recibe una petición y escupe un resultado. Esto es el principio básico. Y nuestro servicio a mi entender ha de realizar lo siguiente:
- Control de Seguridad (Como dice Carlos, tema importantísimo)
- Validacion de parámetros
- Controlar la petición (Aquí es donde entran tantos verbos y tanta historia. O no ¡)
- Ejecutar acción
- Devolver respuesta (json, xml,…)
Vale esta es la base. Cada uno de sus puntos tiene su rollete, pero la base para crearnos nuestro WS es esta y a partir de aquí construimos la API necesaria para trabajar. Pensad que si nosotros generamos un WS para que algún dia alguien de una empresa externa se conecte, nosotros le daremos nuestras especificaciones que se pueden adaptar mas o menos al concepto universal, purista, etc… De la misma manera que si nosotros queremos que nuestro sistema se conecte a otro externo nos debemos adaptar a su protocolo y especificaciones.
Y seguiremos...