2025-02-25
Git Repository Status
Category | Details |
---|---|
🌿 Current Branch | develop |
📝 Latest Commit | b798c84 (2024-10-03 15:16:24) |
🔗 Remote | git@github.com:ebpro/notebook-java-restfulws.git |
🏷️ Latest Tag | No tags |
☕ Java Development Environment
Component | Details |
---|---|
☕ Java Runtime | 21.0.6 (openjdk) |
🎯 Maven | 3.9.9 |
Les exemples suivants sont accessibles dans le dépôt :
develop
dbac38c (fix maven wrapper exec bit, 2025-02-24)
/home/jovyan/work/materials/github/ebpro/notebook-java-rest-sample-jakartarestfull
To get it:
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).
D’une façon générale une classe annotée par @Provider
ajoute des fonctions à JAXRS (traitement des exceptions, conversion des données, …).
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.
If a resource doesn’t exist an exception is raised, and the 404 http status code is returned
. . .
@Provider
public class StatusFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) {
if (containerResponseContext.getStatus() == Response.Status.OK.getStatusCode()) {
for (Annotation annotation : containerResponseContext.getEntityAnnotations()) {
if (annotation instanceof Status) {
containerResponseContext.setStatus(((Status) annotation).value());
break;
}
}
}
}
}
Un exemple de filtre appliqué à la requête sera donné dans la partie sur la sécurité.
/application.wadl
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
E. Bruno - Concepts avancés de Jakarta RESTful Web Services