geek time december 2016 : swagger ii

17
Swagger II Geek Time – Décembre 2016 MAZIGH Med Belhassen OLBATI Consultant

Upload: olbati

Post on 16-Apr-2017

129 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Geek Time December 2016 : Swagger II

Swagger IIGeek Time – Décembre 2016

MAZIGH Med BelhassenOLBATI Consultant

Page 2: Geek Time December 2016 : Swagger II

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

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

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

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

OLBATI - Geek Time - Décembre 2016 6

Documentation statistiques

Documenter son API REST

Page 7: Geek Time December 2016 : Swagger II

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

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

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

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

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

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

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

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

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

OLBATI - Geek Time - Décembre 2016 16

Swagger 2 / Spring REST API

Page 17: Geek Time December 2016 : Swagger II

OLBATI - Geek Time - Décembre 2016 17

Thanks!Any questions?

[email protected]