Document WADL pour vos ressources
Un développeur peut décider de ne pas exposer le document WADL (Web Application Description Language) via une demande OPTIONS pour limiter la quantité d'informations qu'un tiers peut rassembler sur un service. En fournissant moins d'informations, la sécurité est assurée.
Pourquoi et quand exécuter cette tâche
Par défaut, un document WADL peut être demandé pour une ressource particulière en appelant une demande HTTP OPTIONS pour toute URL Java™ API for RESTful Web Services (JAX-RS). Vous pouvez émettre une demande OPTIONS avec la plupart des clients HTTP.
Vous pouvez également créer votre propre document WADL en utilisant le org.apache.wink.common.model.wadl.WADLGenerator. WADLGenerator crée un modèle d'objet annoté Java Architecture for XML Binding (JAXB) pour que vous puissiez facilement le renvoyer en réponse d'entité dans une méthode de ressource @OPTIONS. Si vous souhaitez un document de service pour toutes les classes dans votre application, vous pouvez utiliser le WADLGenerator pour créer une représentation WADL. Le document du service peut aider à comprendre.
Dans l'exemple suivant, vous pouvez utiliser le WADLGenerator pour créer un modèle JAXB de vos ressources. Vous pouvez alors retourner le modèle JAXB pour l'utilisation clients.
Procédure
- Vous pouvez injecter la sous-classe de l'application qui contient toutes vos classes de ressources. Vous pouvez alors transmettre les classes au WADLGenerator de sorte à générer toutes vos classes.
- Renvoyez la classe org.apache.wink.common.model.wadl.Application, qui est un modèle annoté JAXB. Le types annotés JAX-RS MessageBodyWriter for JAXB sont utilisés pour sérialiser le document WADL au client.
Exemple
@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;
}
}