4
Swagger 2 est mort, vive OpenAPI 3 Speakers : Sébastien Lecacheur, Grégory Bloquel Format : Conférence Date : 20 avril 2018 La question de la documentation d’une API est importante. Lors de sa mise en place, les speakers avaient pour exigences : Documentation pour les utilisateurs internes ou externes. Approche contract-first : rédiger la doc avant d’écrire le code Documentation gérée comme le code Documentation lisible par les humains Word ne convenait pas. Ils ont opté pour Swagger. Concurrents de Swagger : RAML et Blueprint Swagger Historique de Swagger : Swagger 1 est sorti en 2010. En 2014 est sorti la V2. En 2015 : démarrage de l’OpenAPI Initative au sein de la fondation Linux à partir de Swagger 2. En 2017, Swagger 3 est sorti et utilise l’OAI. Swagger 3 est une implémentation de l’API. OpenAPI Initiative réunit de nombreux acteurs : WSO2, Mulesoft, Microsoft, …. Tous les acteurs industriels majeurs se sont mis d’accord. Swagger a été popularisé en 2014 par son approche code first. Documentation générée à partir des annotations et donc du code. Présentation de l’approche Contract First On commence par des URI et des exemples. Cycle itératif avec le métier et les utilisateurs pour arriver à un contrat d’interface stable. Outre la génération de documentation, on peut ajouter de la génération de tests, de code, de mocks. Rappel sur les APIs REST : URI comme identifiant de ressource Verbe comme identifiant d’opération Réponse HTTP comme représentation de la ressource (en JSON par exemple) Liens comme relation entre les ressources (HATEOS)

208-04-20 - Swagger 2 est mort, vive OpenAPI 3javaetmoi.com/wp-content/uploads/2018/04/208-04-20-Swagger-2-est... · OpenAPI Initiative réunit de nombreux acteurs : WSO2, Mulesoft,

  • Upload
    dinhque

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Swagger2estmort,viveOpenAPI3Speakers:SébastienLecacheur,GrégoryBloquelFormat:ConférenceDate:20avril2018Laquestiondeladocumentationd’uneAPIestimportante.Lorsdesamiseenplace,lesspeakersavaientpourexigences:

• Documentationpourlesutilisateursinternesouexternes.• Approchecontract-first:rédigerladocavantd’écrirelecode• Documentationgéréecommelecode• Documentationlisibleparleshumains

Wordneconvenaitpas.IlsontoptépourSwagger.ConcurrentsdeSwagger:RAMLetBlueprintSwaggerHistoriquedeSwagger:

• Swagger1estsortien2010.• En2014estsortilaV2.• En2015:démarragedel’OpenAPIInitativeauseindelafondationLinuxàpartirde

Swagger2.• En2017,Swagger3estsortietutilisel’OAI.Swagger3estuneimplémentationde

l’API.OpenAPIInitiativeréunitdenombreuxacteurs:WSO2,Mulesoft,Microsoft,….Touslesacteursindustrielsmajeurssesontmisd’accord.Swaggeraétépopulariséen2014parsonapprochecodefirst.Documentationgénéréeàpartirdesannotationsetdoncducode.Présentationdel’approcheContractFirstOncommencepardesURIetdesexemples.Cycleitératifaveclemétieretlesutilisateurspourarriveràuncontratd’interfacestable.Outrelagénérationdedocumentation,onpeutajouterdelagénérationdetests,decode,democks.RappelsurlesAPIsREST:

• URIcommeidentifiantderessource• Verbecommeidentifiantd’opération• RéponseHTTPcommereprésentationdelaressource(enJSONparexemple)• Lienscommerelationentrelesressources(HATEOS)

NouveautésdeOAS3.0.1

• Deloin,pasdegroschangements• OutilOpenAPIMappournaviguerdansladocumentation• Editeurenligneeditor.swagger.ioououtilSwaggereditor

NouveautésdeSwagger3

• DescriptionmigréedeGFMversCommonMark• GestiondesversionsenSemanticVersionning:versionsur3digitsx.y.e• MontéedeversionàJSONSchemaWrightDraft00

o Nouveauxtypessupprotés:oneOf…La1ièreligned’unfichierYAMLdeSwaggerpréciselaversionSwagger:"2.0"Openapi:"3.0.1"Nouveautésserveur:

• URLpermettantdepréciserdifférentsserveurs(production,staging)• Varialibilsationdel’URL,parexempleaveclenomdel’environnement• Possibilitédesurchargerleserverdanschaqueendpoint

Nouveautéssécurité:

• Basicdevienthttp• SupportdeOpenIDConnect• OAuth2updated• Ajoutde«Scheme»et«bearerformat»

Nouveautéscomposants:

• UncomposantpeutêtreréutilisédansladéfinitiondesAPI• Beaucoupdedéplacement/renommage

Nouveautéssurleformatdesrequêtes:

• Wildcardspourlescodesderetour(ex:5XX):onn’exposepaslecodedeserreursserveursinternesauconsommateur

• oneOf/anyOfpourduPolymorphsime/CompositionNouveautéssurlescallbacks:

• Supportdeswebhooko Permetdenotifierunutilisateurdel’APIentempsréeld’unévénement

• Onpeutajouterdesexemples

NouveautéLink:

• Définirunerelationentreuneréponseetd’autresopérationso Opérationspossibleso Pagination(cursor):identifiantdecurseurréutilisablepourappelsuivant

Outils:

• Editeurswagger-editor• Générationdecode:swagger-codegen

o Générateurderéférence.RéécritenSwagger3.o Swagger-code-generatorso Client/serverJava,JAXS,Kotlin,HTMLo Changementdumoteurdetemplating:mustache=>handlebaro PullRequestpourPHPetScala

• LesautresgénérateursditscompatiblesOpenAPI3fonctionnentmoinsbien.Bienveilleràlesqualifier.

Futurd’OpenAPI:

• Issues1466• Limitations

o Pasdetraits:décrireuncomportement(filtrable,cachable…)o Pasderesourcestypes:déclarationdetypederessourcesafindemutualiser

ducomportemententreressources(avecsurchargepossible)o Pasdetemplatingdescomposants:surlaréponsed’unPOST,onnepeutpas

mettre‘montalkaétégénéré’mais‘maressourceaétégénérée’=>ondoitrestergénérique