SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
SWAGGER
Le code pour documentation
REST
REpresentational State Transfer
REST
REpresentational State Transfer
• Principe d’architecture
• Sans état
• Avantages premier
• Respect du standard HTTP (Verbes GET, POST)
• Plus simple & moins verbeux que SOAP
Documenter une API
Non standard
Non VERSIONNABLE
Non UTILISABLE
SWAGGER
• Description d’une API REST
• Grammaire JSON / YAML
• Équivalent du WSDL du SOAP
• Standard de fait
C’est quoi ?
SWAGGER
• Aucun standard ne s’impose
• WADL (Web Application Description Language)
• Soumis au W3C par sun en 2009 mais non standardisé
Alternatives ?
SWAGGER
Version 2.0
• Initié en 2014
• Un seul fichier JSON
• Support du markdown
SWAGGER
• jax-rs
• Spring
• nodeJS
• go(lang)
• Python
• etc…
Intégration
• Swagger codegen
• swagger editor
• Swagger UI
• Génération documents
• plugin(s) intelliJ
• container UI & editor
Outillage
écosystème
SWAGGER
swagger editor
SWAGGER
swagger editor
SWAGGER
UI
SWAGGER
UI
2 types d’intégration
Serveur distinct
Pour
• Centralisation
• Annuaire
Contre
• Gestion CORS
Intégration à l’API
Pour
• Localisation
• Facilité
Contre
• Gestion sécurité
SWAGGER
intégration jax-rs et swagger-core
S’appui sur les annotations jax-rs (jsr 311)
Fourni son propre jeu d’annotation pour
enrichir la description de l’API
SWAGGER
@SwaggerUIConfiguration

@ApplicationPath("api")

@SwaggerDefinition(

info = @Info(title = "swagger-ui-integration demo", version = "1"

, description = "Global description for basic application demo")

, tags = {

@Tag(name = "person", description = "Action on person !!")

, @Tag(name = "address", description = "Action on address management")

}

)

public class SimpleApplicationConfiguration extends Application {

}
Description initiale de l’API
SWAGGER
@SwaggerUIConfiguration

@ApplicationPath("api")

@SwaggerDefinition(

info = @Info(title = "swagger-ui-integration demo", version = "1"

, description = "Global description for basic application demo")

, tags = {

@Tag(name = "person", description = "Action on person !!")

, @Tag(name = "address", description = "Action on address management")

}

)

public class SimpleApplicationConfiguration extends Application {

}
Description initiale de l’API
@SwaggerDefinition() Définition générale de l’API
@Info() Information de l’API
@Tag() Chapitre fonctionnel de l’API
SWAGGER
Description d’un endpoint global
@Path("person")

@Produces({

"application/json", "application/xml"

})

@Api(tags = "person")

public class PersonEndpoint {
…
}
@Api() Description du endpoint
@Tag() Rattachement au chapitre
SWAGGER
Description d’un endpoint GET liste
@GET

@Produces({

"application/json", "application/xml"

})

@ApiOperation(

value = "get list of person"

, notes = "if no person already persited, provide a empty list"

, response = Person.class

, responseContainer = "List"

)

public List<Person> getPersonList() {

return personService.getList(null);

}
@ApiOpération() Opération lié au endpoint
SWAGGER
Description d’un endpoint GET unitaire
@GET

@Path("{personId:[0-9]*}")

@Produces({

"application/json", "application/xml"

})

@ApiOperation(

value = "get person by Id"

)

@ApiResponses({

@ApiResponse(code = 200, message = "success", response = Person.class)

, @ApiResponse(code = 404, message = "Person not found", response = String.class)

})

public Person getPerson(@PathParam("personId") Integer personId) throws PersonNotExistException {

return personService.get(personId);

}
@ApiOpération() Opération lié au endpoint
@ApiResponses() Liste des réponses possible
@ApiResponse() Description d’une réponse
SWAGGER
Description d’un endpoint GET unitaire
@GET

@Path("{personId:[0-9]*}")

@Produces({

"application/json", "application/xml"

})

@ApiOperation(

value = "get person by Id"

)

@ApiResponses({

@ApiResponse(code = 200, message = "success", response = Person.class)

, @ApiResponse(code = 404, message = "Person not found", response = String.class)

})

public Person getPerson(@PathParam("personId") Integer personId) throws PersonNotExistException {

return personService.get(personId);

}
Description du type
SWAGGER
Description d’un endpoint POST
@POST

@Consumes("application/x-www-form-urlencoded")

@ApiOperation("Create person")

public Response createPerson(

@FormParam("firstname") String firstName

, @FormParam("lastname") String lastName

) throws PersonAlreadyPersisted {

Person person = personService.persist(new Person(firstName, lastName));

URI personUri = UriBuilder

.fromResource(PersonEndpoint.class) 

.path(String.valueOf(person.getId())) 

.build();

return Response.created(personUri).build();

}
@ApiOpération() Opération lié au endpoint
SWAGGER
Description d’un endpoint POST
@POST

@Consumes("application/x-www-form-urlencoded")

@ApiOperation("Create person")

public Response createPerson(

@FormParam("firstname") String firstName

, @FormParam("lastname") String lastName

) throws PersonAlreadyPersisted {

Person person = personService.persist(new Person(firstName, lastName));

URI personUri = UriBuilder

.fromResource(PersonEndpoint.class) 

.path(String.valueOf(person.getId())) 

.build();

return Response.created(personUri).build();

}
Utilisation des annotation jax-rs pour la documentation des paramètres
SWAGGER
Du code !!!!
SWAGGER
Les avantages de Swagger UI
Essayer l’API !!
SWAGGER
Les avantages de Swagger UI
Parce que la console, y’a que ça de vrai
Pour essayer dans un navigateur ou REST tools
Résultat de la requête
Code HTTP Résultat de la requête
Et les headers !!!!!
SWAGGER
swagger-ui-integration
PUB
Intégration sans effort de swagger et swagger-ui
Un import maven et une annotation
3 niveaux de configuration
• Au niveau projet (annotation)
• Au niveau livrable (fichier de configuration ressources)
• Au niveau environnement (fichier de configuration local)
@SwaggerUIConfiguration()
SWAGGER
swagger-ui-integration
PUB
Intégration sans effort de swagger et swagger-ui
Un import maven et une annotation
3 niveaux de configuration
• Au niveau projet (annotation)
• Au niveau livrable (fichier de configuration ressources)
• Au niveau environnement (fichier de configuration local)
@SwaggerUIConfiguration(

apiDocPath = "documentation"

, apiDocIndex = "rest-index/index.html"

, restApplicationPackageAsRoot = false

, restApplicationPackage = "org.shipstone.swagger.demo.ws.rs"

)
JAVA EE 6 LGPL
version 1.0
Presentation swagger

Contenu connexe

Tendances

REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUDPrem Sanil
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture RESTFadel Chafai
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start GuideAndrii Gakhov
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Java EE and Spring Side-by-Side
Java EE and Spring Side-by-SideJava EE and Spring Side-by-Side
Java EE and Spring Side-by-SideReza Rahman
 
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...Hariharan Ganesan
 
Express JS Rest API Tutorial
Express JS Rest API TutorialExpress JS Rest API Tutorial
Express JS Rest API TutorialSimplilearn
 
What is API - Understanding API Simplified
What is API - Understanding API SimplifiedWhat is API - Understanding API Simplified
What is API - Understanding API SimplifiedJubin Aghara
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introductionRasheed Waraich
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Edureka!
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring DataAnton Sulzhenko
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...Edureka!
 

Tendances (20)

REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
 
Web api
Web apiWeb api
Web api
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start Guide
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Java EE and Spring Side-by-Side
Java EE and Spring Side-by-SideJava EE and Spring Side-by-Side
Java EE and Spring Side-by-Side
 
Postman
PostmanPostman
Postman
 
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
 
Rest web services
Rest web servicesRest web services
Rest web services
 
Express JS Rest API Tutorial
Express JS Rest API TutorialExpress JS Rest API Tutorial
Express JS Rest API Tutorial
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
What is API - Understanding API Simplified
What is API - Understanding API SimplifiedWhat is API - Understanding API Simplified
What is API - Understanding API Simplified
 
Angular material
Angular materialAngular material
Angular material
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
An Introduction To REST API
An Introduction To REST APIAn Introduction To REST API
An Introduction To REST API
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 

Similaire à Presentation swagger

Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Gilles Pommier
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web5pidou
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity frameworkDNG Consulting
 
Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)Novelys
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8Yannick Chartois
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
 
Formation java script
Formation java scriptFormation java script
Formation java scriptRomdhani Asma
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)Restlet
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage GoSylvain Wallez
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDBMongoDB
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 

Similaire à Presentation swagger (20)

Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
 
Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !Votre première App SharePoint pour Office 365 avec Visual Studio !
Votre première App SharePoint pour Office 365 avec Visual Studio !
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
 
Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8Les concepts de la programmation fonctionnelle illustrés avec java 8
Les concepts de la programmation fonctionnelle illustrés avec java 8
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Formation java script
Formation java scriptFormation java script
Formation java script
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage Go
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
Spark dataframe
Spark dataframeSpark dataframe
Spark dataframe
 
Créer des applications Java avec MongoDB
Créer des applications Java avec MongoDBCréer des applications Java avec MongoDB
Créer des applications Java avec MongoDB
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 

Presentation swagger

  • 1.
  • 2. SWAGGER Le code pour documentation
  • 4. REST REpresentational State Transfer • Principe d’architecture • Sans état • Avantages premier • Respect du standard HTTP (Verbes GET, POST) • Plus simple & moins verbeux que SOAP
  • 5. Documenter une API Non standard Non VERSIONNABLE Non UTILISABLE
  • 6. SWAGGER • Description d’une API REST • Grammaire JSON / YAML • Équivalent du WSDL du SOAP • Standard de fait C’est quoi ?
  • 7. SWAGGER • Aucun standard ne s’impose • WADL (Web Application Description Language) • Soumis au W3C par sun en 2009 mais non standardisé Alternatives ?
  • 8. SWAGGER Version 2.0 • Initié en 2014 • Un seul fichier JSON • Support du markdown
  • 9. SWAGGER • jax-rs • Spring • nodeJS • go(lang) • Python • etc… Intégration • Swagger codegen • swagger editor • Swagger UI • Génération documents • plugin(s) intelliJ • container UI & editor Outillage écosystème
  • 13. SWAGGER UI 2 types d’intégration Serveur distinct Pour • Centralisation • Annuaire Contre • Gestion CORS Intégration à l’API Pour • Localisation • Facilité Contre • Gestion sécurité
  • 14. SWAGGER intégration jax-rs et swagger-core S’appui sur les annotations jax-rs (jsr 311) Fourni son propre jeu d’annotation pour enrichir la description de l’API
  • 15. SWAGGER @SwaggerUIConfiguration
 @ApplicationPath("api")
 @SwaggerDefinition(
 info = @Info(title = "swagger-ui-integration demo", version = "1"
 , description = "Global description for basic application demo")
 , tags = {
 @Tag(name = "person", description = "Action on person !!")
 , @Tag(name = "address", description = "Action on address management")
 }
 )
 public class SimpleApplicationConfiguration extends Application {
 } Description initiale de l’API
  • 16. SWAGGER @SwaggerUIConfiguration
 @ApplicationPath("api")
 @SwaggerDefinition(
 info = @Info(title = "swagger-ui-integration demo", version = "1"
 , description = "Global description for basic application demo")
 , tags = {
 @Tag(name = "person", description = "Action on person !!")
 , @Tag(name = "address", description = "Action on address management")
 }
 )
 public class SimpleApplicationConfiguration extends Application {
 } Description initiale de l’API @SwaggerDefinition() Définition générale de l’API @Info() Information de l’API @Tag() Chapitre fonctionnel de l’API
  • 17. SWAGGER Description d’un endpoint global @Path("person")
 @Produces({
 "application/json", "application/xml"
 })
 @Api(tags = "person")
 public class PersonEndpoint { … } @Api() Description du endpoint @Tag() Rattachement au chapitre
  • 18. SWAGGER Description d’un endpoint GET liste @GET
 @Produces({
 "application/json", "application/xml"
 })
 @ApiOperation(
 value = "get list of person"
 , notes = "if no person already persited, provide a empty list"
 , response = Person.class
 , responseContainer = "List"
 )
 public List<Person> getPersonList() {
 return personService.getList(null);
 } @ApiOpération() Opération lié au endpoint
  • 19. SWAGGER Description d’un endpoint GET unitaire @GET
 @Path("{personId:[0-9]*}")
 @Produces({
 "application/json", "application/xml"
 })
 @ApiOperation(
 value = "get person by Id"
 )
 @ApiResponses({
 @ApiResponse(code = 200, message = "success", response = Person.class)
 , @ApiResponse(code = 404, message = "Person not found", response = String.class)
 })
 public Person getPerson(@PathParam("personId") Integer personId) throws PersonNotExistException {
 return personService.get(personId);
 } @ApiOpération() Opération lié au endpoint @ApiResponses() Liste des réponses possible @ApiResponse() Description d’une réponse
  • 20. SWAGGER Description d’un endpoint GET unitaire @GET
 @Path("{personId:[0-9]*}")
 @Produces({
 "application/json", "application/xml"
 })
 @ApiOperation(
 value = "get person by Id"
 )
 @ApiResponses({
 @ApiResponse(code = 200, message = "success", response = Person.class)
 , @ApiResponse(code = 404, message = "Person not found", response = String.class)
 })
 public Person getPerson(@PathParam("personId") Integer personId) throws PersonNotExistException {
 return personService.get(personId);
 } Description du type
  • 21. SWAGGER Description d’un endpoint POST @POST
 @Consumes("application/x-www-form-urlencoded")
 @ApiOperation("Create person")
 public Response createPerson(
 @FormParam("firstname") String firstName
 , @FormParam("lastname") String lastName
 ) throws PersonAlreadyPersisted {
 Person person = personService.persist(new Person(firstName, lastName));
 URI personUri = UriBuilder
 .fromResource(PersonEndpoint.class) 
 .path(String.valueOf(person.getId())) 
 .build();
 return Response.created(personUri).build();
 } @ApiOpération() Opération lié au endpoint
  • 22. SWAGGER Description d’un endpoint POST @POST
 @Consumes("application/x-www-form-urlencoded")
 @ApiOperation("Create person")
 public Response createPerson(
 @FormParam("firstname") String firstName
 , @FormParam("lastname") String lastName
 ) throws PersonAlreadyPersisted {
 Person person = personService.persist(new Person(firstName, lastName));
 URI personUri = UriBuilder
 .fromResource(PersonEndpoint.class) 
 .path(String.valueOf(person.getId())) 
 .build();
 return Response.created(personUri).build();
 } Utilisation des annotation jax-rs pour la documentation des paramètres
  • 24. SWAGGER Les avantages de Swagger UI Essayer l’API !!
  • 25. SWAGGER Les avantages de Swagger UI Parce que la console, y’a que ça de vrai Pour essayer dans un navigateur ou REST tools Résultat de la requête Code HTTP Résultat de la requête Et les headers !!!!!
  • 26. SWAGGER swagger-ui-integration PUB Intégration sans effort de swagger et swagger-ui Un import maven et une annotation 3 niveaux de configuration • Au niveau projet (annotation) • Au niveau livrable (fichier de configuration ressources) • Au niveau environnement (fichier de configuration local) @SwaggerUIConfiguration()
  • 27. SWAGGER swagger-ui-integration PUB Intégration sans effort de swagger et swagger-ui Un import maven et une annotation 3 niveaux de configuration • Au niveau projet (annotation) • Au niveau livrable (fichier de configuration ressources) • Au niveau environnement (fichier de configuration local) @SwaggerUIConfiguration(
 apiDocPath = "documentation"
 , apiDocIndex = "rest-index/index.html"
 , restApplicationPackageAsRoot = false
 , restApplicationPackage = "org.shipstone.swagger.demo.ws.rs"
 ) JAVA EE 6 LGPL version 1.0