Error: failed to read file /home/jovyan/work/materials/github/ebpro/notebook-java-rest-sample-jakartarestfull/src/main/java/fr/univtln/bruno/samples/jaxrs/exceptions/NotFoundException.java: /home/jovyan/work/materials/github/ebpro/notebook-java-rest-sample-jakartarestfull/src/main/java/fr/univtln/bruno/samples/jaxrs/exceptions/NotFoundException.java
Concepts avancés de Jakarta RESTful Web Services
Fonctionnalités avancées pour le développement de services REST robustes. - Providers et extensions JAX-RS - Filtres et intercepteurs - Schémas et documentation (WADL, OpenAPI) - Gestion des exceptions - Sécurité et authentification - Pagination et HATEOAS
Les liens sémantiques
Les liens sémantiques entre les resources peuvent être réprésentés à l’aide d’URLs de façon standard ((RFC8288)[https://tools.ietf.org/html/rfc8288]). Une liste complète est données sur le site de l’IANA : https://www.iana.org/assignments/link-relations/link-relations.xhtml. Les plus classiquement utilisé avec REST sont self, first, previous, next et last. Pour simplifier l’usage de l’API ces liens peuvent être fournis dans l’entête d’une réponse http et/ou dans le corps de la réponse (par exemple lors de la pagination).
Link: <http://MyServer:8080/MyApp/Persons/1>; rel="first-person", <http://MyServer:8080/MyApp/Persons/10>; rel="next-person", <http://MyServer:8080/MyApp/Persons/8>; rel="previous-person", <http://MyServer:8080/MyApp/Persons/90>; rel="last-person"
Etendre JAX-RS avec les Providers
D’une façon générale une classe annotée par @Provider ajoute des fonctions à JAXRS (traitement des exceptions, conversion des données, …).
Les mappers : application aux exceptions
Le traitement des exceptions peut être simplifié en utilisant des mappers (cf. package exceptions et mapper) qui s’appliquent automatiquement lors qu’une exception est émise. Dans ce cas un objet Response est construit manuellement pour contrôler le détail du corps et de l’entête.
Error: failed to read file /home/jovyan/work/materials/github/ebpro/notebook-java-rest-sample-jakartarestfull/src/main/java/fr/univtln/bruno/samples/jaxrs/mappers/BusinessExceptionMapper.java: /home/jovyan/work/materials/github/ebpro/notebook-java-rest-sample-jakartarestfull/src/main/java/fr/univtln/bruno/samples/jaxrs/mappers/BusinessExceptionMapper.java
If a resource doesn’t exist an exception is raised, and the 404 http status code is returned
Les filtres : application au statut et à la pagination
Error: failed to read file /home/jovyan/work/materials/github/ebpro/notebook-java-rest-sample-jakartarestfull/src/main/java/fr/univtln/bruno/samples/jaxrs/status/StatusFilter.java: /home/jovyan/work/materials/github/ebpro/notebook-java-rest-sample-jakartarestfull/src/main/java/fr/univtln/bruno/samples/jaxrs/status/StatusFilter.java
Un exemple de filtre appliqué à la requête sera donné dans la partie sur la sécurité.
Schéma d’une API REST
- WSDL un autre langage de service Web permet de décrire un tel schéma.
- Le langage WADL est spécifique à REST.
- Par défaut Jersey génére une description WADL
/application.wadl - Cependant, pour cela l’application nécessite une implantation du standard pour traiter les documents XML appelé JAXB qui n’est plus fournie en standard dans le JDK depuis la version 8 (nous utilisons ici la version 15).
Si JAXB est dans le classpath (cf. pom.xml) la génération d’une description WADL est automatique.
https://jakarta.ee/specifications/restful-ws/3.0/jakarta-restful-ws-spec-3.0.html#context