REST web service WSDL?


Estoy implementando un servicio web y he implementado una versión REST y SOAP para ver cuál se adaptaba a mis necesidades.He decidido elegir REST por su simplicidad y que probablemente esté desarrollando una aplicación para iPhone para consumirlo. Mi pregunta es realmente simple, ¿es posible crear un WSDL o WADL para mi servicio REST y es necesario?

Gracias

Author: Ian, 2011-07-26

7 answers

Con un buen servicio RESTful, no es necesario generar WADL (no digamos mucho menos que ajuste bien WSDL) porque no se auto-describen. Por" autodescripción " quiero decir específicamente que entregará documentos que describan todos los recursos (relevantes) publicados por el servicio, y que el uso de una solicitud de OPCIONES HTTP estándar en cualquiera de estos producirá información básica sobre cómo interactuar. El único beneficio real de usar WADL es que permite al llamante descubrir los esquemas para los documentos complejos necesita trabajar con anticipación; el DESCANSO en sí no proporciona ninguna ayuda allí (y algunos restianos creen que hacer tales cosas es contraproducente, con lo que no estoy seguro de estar de acuerdo).

Por supuesto, eso no captura los patrones de interacción más profundos, pero tampoco la gran mayoría de las descripciones de servicios WSDL, por lo que no hay cambios allí.


Para el registro, uso Apache CXF para crear servicios RESTful (usando JAX-RS) y que publica WADL para ellos.

 35
Author: Donal Fellows,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-26 13:29:04

El W3C ha hecho una recomendación formal para un estándar de documentación REST basado en WSDL 2.0. Aquí está una cita del artículo de IBM :

El término Servicios web se asocia típicamente con la operación-o servicios basados en la acción que utilizan SOAP y los estándares WS*, tales como WS-Direccionamiento y WS-Seguridad. El término Servicios web REST en general se refiere a una arquitectura de servicios web basada en recursos que utiliza HTTP y XML. Cada uno de estos los estilos de servicios web arquitectónicos tienen su lugar, pero hasta hace poco, el estándar WSDL no era compatible con ambos estilo. El enlace HTTP WSDL 1.1 fue inadecuado para describir comunicaciones con HTTP y XML, por lo que no había manera de formalmente describir servicios web REST con WSDL. La publicación de WSDL 2.0, que fue diseñado con REST Web services en mente, como una World Wide Web La recomendación del Consorcio (W3C) significa que ahora hay un lenguaje para describir REST Web Servicio.

 6
Author: chaotic3quilibrium,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-28 17:16:16

Por supuesto que es posible, pero para responder si es necesario o no, no proporcionó suficiente información.

Le sugiero que eche un vistazo al sitio de desarrollo de ibm que proporciona un artículo interesante sobre el tema http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/
Espero que ayude.


Estrictamente, con WSDL 1.0 se puede' t, pero con WSDL2 se puede, porque fue desarrollado para aceptar este tipo de demanda,

"... WSDL 2.0 en un WS-I perfil que aborda los requisitos para servicios web de estilo REST. La adición de GET en SOAP 1.2 y varios adiciones en WSDL 2.0 como la seguridad de la operación, la capacidad de describir mensajes que se refieren a otros servicios Web, y el enlace HTTP mejorado ahora es posible describir servicios web de estilo REST.", Arthur Ryman .

 3
Author: Giulia Di Federico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-20 09:55:13

Como dijo @GiuliaDiFederico, "por supuesto que es posible" (con WSDL2), mostrando un buen enlace de fuente sobre cómo hacerlo. @DonalFellows, por otro lado, no fomenta el uso de WSDL...

Creo que el uso de WSDL es una cuestión de

  • NIVEL DE FORMALIZACIÓN: con WSDL puede expresar de manera más formal todos los detalles relevantes de su servicio web.
  • NIVEL DE ESTABILIDAD: si necesita contratos a largo plazo, y evitar riesgos de cambios en el entorno donde su servicio web está expuesto, WSDL ayuda a mantener la estabilidad.
  • NECESIDAD DE ESTÁNDARES: si los clientes prefieren servicios web que se pueden decir "compatibles con estándares", use estándares. El único es W3C, y W3C requiere XML, SOAP y WSDL.
 3
Author: Peter Krauss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-20 10:09:01

RestDoc intenta crear un marco de documentación simple para los recursos REST. Un navegador está disponible a través de restdoc-renderer.

También ofrece Anotaciones Java para habilitar la creación sobre la marcha de la documentación RestDoc. Las implementaciones están disponibles para Jersey 1.x y JAX-RS 2.0.

 3
Author: koppor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-24 07:02:02

Creo que WSDL no es apropiado para REST y WADL no es necesario. HTTP ya expone lo que WADL podría describir en un archivo separado. Por ejemplo, el encabezado" Allow " devuelve el método HTTP permitido, y la Negociación de contenido es para elegir el formato correcto.

 1
Author: deamon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-26 13:25:39

WADL no es necesario. Pero, si el código del lado del cliente ya está presente en una aplicación y desea hacer una nueva llamada rest, entonces es una buena práctica que use wadl para generar el stub de java del lado del cliente(POJO). De esta manera, los POJOs del lado del cliente estarán sincronizados con los POJOs del lado del servicio. Por ejemplo, si está reemplazando la llamada de servicio EJB / SOAP con la llamada de servicio Rest en una aplicación existente, entonces es muy seguro y una buena práctica usar WADL.

Puede generar java del lado del cliente stubs de WADL mediante el uso de wadl2java maven plugin.

 0
Author: R.Ranjan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-02 19:12:18