geek time december 2016 : swagger ii
TRANSCRIPT
![Page 1: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/1.jpg)
Swagger IIGeek Time – Décembre 2016
MAZIGH Med BelhassenOLBATI Consultant
![Page 2: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/2.jpg)
OLBATI - Geek Time - Décembre 2016 2
Plan
● Rappel sur l'architecture Rest● Statistiques sur les API REST● Documentation statistiques● OpenAPI● Swagger tools● Swagger 2 avec Spring REST API● Démonstration
![Page 3: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/3.jpg)
OLBATI - Geek Time - Décembre 2016 3
API REST ?
● Representational State Transfer
● Architecture Client-serveur
● Stateless
● Facile à consommer
![Page 4: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/4.jpg)
OLBATI - Geek Time - Décembre 2016 4
Statistiques sur les API REST
source : http://www.programmableweb.com/api-research
![Page 5: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/5.jpg)
OLBATI - Geek Time - Décembre 2016 5
Documentation statistiques● Que serait une API s'il était impossible de
comprendre son mode de fonctionnement ?
![Page 6: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/6.jpg)
OLBATI - Geek Time - Décembre 2016 6
Documentation statistiques
Documenter son API REST
![Page 7: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/7.jpg)
OLBATI - Geek Time - Décembre 2016 7
Documentation statistiques
une API dite RESTFul devrait pouvoir être utilisée sans documentation !
![Page 8: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/8.jpg)
OLBATI - Geek Time - Décembre 2016 8
Documentation statistiques
● Créer une documentation.● Suivre un ensemble de spécifications permettant de
décrire et de documenter une API REST.
![Page 9: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/9.jpg)
OLBATI - Geek Time - Décembre 2016 9
OpenAPI● OpenAPI, anciennement connu sous le nom de Swagger
RESTful API, désigne un ensemble de spécifications permettant de décrire et de documenter une API REST.
● Implémenter ces spécifications permet entre autres :○ D'obtenir une documentation (Swagger UI)○ Générer des clients permettant d'interagir avec notre
API (Swagger Codegen)
![Page 10: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/10.jpg)
OLBATI - Geek Time - Décembre 2016 10
Swagger Tools● Le résultat final est un fichier, il peut être rédigé aussi bien en JSON qu'en
YAML.● Swagger editor:
source : http://swagger.io/swagger-editor/
![Page 11: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/11.jpg)
OLBATI - Geek Time - Décembre 2016 11
Swagger Tools● Swagger UI : Swagger UI is a dependency-free collection
of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.
● Swagger codegen : swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition
![Page 12: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/12.jpg)
OLBATI - Geek Time - Décembre 2016 12
Swagger 2 / Spring REST API● springfox
<dependency> <groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId> <version>2.6.1</version></dependency>
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version></dependency>
![Page 13: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/13.jpg)
OLBATI - Geek Time - Décembre 2016 13
Swagger 2 / Spring REST API● Configuration
@Configuration@EnableSwagger2public class SwaggerConfig {
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.olbati")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); }
![Page 14: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/14.jpg)
OLBATI - Geek Time - Décembre 2016 14
Swagger 2 / Spring REST API● API
○ @ApiOperation■ value = ""■ nickname = ""■ notes = ""■ response = MyClass.class■ responseContainer = "exp : List"
○ @ApiResponses■ value = {un ou plusieurs ApiResponse}
○ @ApiResponse■ code = 200 / 401■ message = "Success" / "Unauthorized"■ response = Myclass.class■ responseContainer = "List"
![Page 15: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/15.jpg)
OLBATI - Geek Time - Décembre 2016 15
Swagger 2 / Spring REST API○ @ApiImplicitParams({un ou plusieurs ApiImplicitParam})○ @ApiImplicitParam
■ name = "name"■ value = "User's name"■ required = false■ dataType = "string",■ paramType = "query"■ defaultValue = "Belhassen"
○ @ApiParam : c’est comme ApiImplicitParam mais appliquer aux arguments de services.
○ @ApiModel : appliquer sur les Model.○ @ApiModelProperty
■ position = 1■ name = "address"■ required = true■ value = "The email address of recipient"■ example = "[email protected]"
![Page 16: Geek Time December 2016 : Swagger II](https://reader031.vdocuments.site/reader031/viewer/2022021922/587112391a28abac6d8b60cd/html5/thumbnails/16.jpg)
OLBATI - Geek Time - Décembre 2016 16
Swagger 2 / Spring REST API