Creación de un documento WADL para sus recursos
Es posible que un desarrollador no desee mostrar el documento WADL (Web Application Description Language) a través de una solicitud OPTIONS para limitar la cantidad de información que una persona externa puede recopilar sobre un servicio. Al proporcionar menos información, se puede conseguir más seguridad mediante la oscuridad.
Acerca de esta tarea
De forma predeterminada, se puede solicitar un documento WADL para un recurso determinado invocando una solicitud OPTIONS HTTP para cualquier URL de API de Java™ para RESTful Web Services (JAX-RS). Puede emitir una petición OPTIONS con la mayoría de los clientes HTTP.
También puede crear su propio documento WADL utilizando el org.apache.wink.common.model.wadl.WADLGenerator. El WADLGenerator crea un modelo de objeto anotado JAXB (Java Architecture for XML Binding) de forma que pueda devolverlo fácilmente como una respuesta de entidad en un método de recurso @OPTIONS. Si desea un documento de servicio para todas las clases de la aplicación, puede utilizar el WADLGenerator para crear una representación WADL. El documento de servicio puede ayudar a mejorar la comprensión.
En el ejemplo siguiente, puede utilizar el WADLGenerator para crear un modelo JAXB a partir de sus recursos. A continuación, puede devolver el modelo JAXB para que lo consuman los clientes.
Procedimiento
- Puede inyectar la subclase Aplicación que contiene todas las clases de recursos. A continuación, puede pasar las clases al WADLGenerator para generar todas las clases.
- Devuelva la clase org.apache.wink.common.model.wadl.Application, que es un objeto anotado JAXB. Se utiliza el MessageBodyWriter de JAX-RS para los tipos anotados JAXB para serializar el documento WADL para el cliente.
Ejemplo
@javax.ws.rs.Path("myexample")
public class MyResource {
@Context
javax.ws.rs.core.Application app;
@javax.ws.rs.OPTIONS
@Produces("application/vnd.sun.wadl+xml")
public org.apache.wink.common.model.wadl.Application getOptions() {
org.apache.wink.common.model.wadl.Application wadlAppDoc = new WADLGenerator().generate("", app.getClasses());
/* modify the wadlAppDoc JAXB model if you want to add additional information */
return wadlAppDoc;
}
}