Swagger - Make your REST APIs accessible - Victor Trakhtenberg

47
Swagger Make your API accessible Victor Trakhtenberg [email protected] @victortr75

Transcript of Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Page 1: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger    

Make  your  API  accessible  

Victor  Trakhtenberg    

   

[email protected]              @victortr75            

Page 2: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Personal  

My  name  is  Victor  

Page 3: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Personal  

Java.IL  community  co-­‐founder  

http://www.meetup.com/JavaIL/

Page 4: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Personal  

Full  Stack  Engineer  @    

Page 5: Swagger - Make your REST APIs accessible - Victor Trakhtenberg
Page 6: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

http://vatuma.com/demo/wp-content/uploads/2009/11/sun.jpg

Page 7: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

http://toonclips.com/design/828

Page 8: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

hFp://www.appdynamics.com/blog/wp-­‐content/uploads/2012/11/producMonCraziness2.png  

Page 9: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

http://thehandcraPedstory.com/wp-content/uploads/2014/08/we-all-have-a-story-to-tell.jpg

Page 10: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Architecture  Monolith  

to  Micro  Services  

APIs  

hFps://twiFer.com/dcorpa  

Page 11: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Architecture  

APIs  are  for  humans  

DocumentaMon  

hFp://www.infoq.com/resource/presentaMons/API-­‐Humans/en/slides/sl23.jpg  

Page 12: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

DocumentaMon  

Page 13: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

DocumentaMon  

•  No  standard  •  Ad-­‐hoc  aFributes  • Managed  manually  •  Not  up  to  date  •  …..  

hFp://www.imagineyourreality.com/business-­‐coaching/documentaMon.html  

Page 14: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

API  LisMng  

Page 15: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

API  OperaMons  

Page 16: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

API  parameters  and  return  types  

Page 17: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  is…  

•  producing  •  consuming  •  visualizing    

RESTful  APIs      

A  framework  for  

•  describing  •  documenMng  

RESTful  APIs      

A  specificaMon  for  

Technology    

Methodology    

Page 18: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

The  Swagger  SpecificaMon  

It’s  a  spec!  •  JSON  to  specify  metadata  •  JSON  to  specify  API  structure  •  JSON  schema  for  the  model  specificaMon  

• Machine  readable  •  Language  agnosMc  

Page 19: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Agenda  •  IntroducMon  •  Deep  Dive  •  The  technology  •  Swagger  is  not  •  Swagger  2.0  •  AlternaMves  •  References  

Page 20: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Deep  Dive  

Page 21: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  -­‐  API  LisMng  

Page 22: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  -­‐  API  LisMng  -­‐  JSON  

Page 23: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  –  API  LisMng  -­‐  AnnotaMons  

Page 24: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  -­‐  API  Details  

Page 25: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  –  Test  the  API  

Page 26: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  -­‐  API  Details  -­‐  JSON  

Page 27: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  –  API  Details  -­‐  AnnotaMons  

Page 28: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

The  Technology  

Page 29: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Reverb  -­‐  Wordnik  

Atmosphere  –  Scalatra  –  JSON4S  

Page 30: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

The  Technology  –  Scala  based  

•  swagger-­‐core  •  swagger-­‐codegen  •  swagger-­‐ui  

•  swagger-­‐js  •  swagger-­‐socket  

Page 31: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Server  side  integraMons  

•  Django  •  Node.js  •  JAX-­‐RS  •  RESTEasy  •  Grails  •  Play  2  •  Scalatra  •  go-­‐rescul  

•  SpringMVC  •  ServiceStack  .net/MONO  •  Swagger-­‐PHP  •  Symphony  2  •  Grape-­‐swagger  for  Ruby  •  Octohipster  for  Clojure  •  More…  

Page 32: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Client  code  generaMon  

•  Java  •  Scala  •  Groovy  •  Clojure  •  Python  •  Ruby  

•  ObjecMveC  •  C#  •  PHP  •  Javascript  •  Custom  

•  Uses  {{mustache}} templates  

Page 33: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  is  not  

Page 34: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

•  Does  not  support  mulMple  API  versions  •  Does  not  tell  how  to  write  the  API  

– Delete  an  object  by  HTTP  DELETE  or  via  HTTP  GET  with  query  param  

•  Is  not  trying  to  solve  all  problems  for  all  APIs  

Page 35: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  2.0  

Page 36: Swagger - Make your REST APIs accessible - Victor Trakhtenberg
Page 37: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Emerging  Standard  

•  Thousands  of  developers  contributed  to  the  ecosystem  

•  Tens  of  thousands  of  producMon  deployments  

•  From  startups  to  US  Government  

http://www.marketwatch.com/story/reverb-announces-swagger-20-a-next-generation-interface-to-connect-apis-and-cloud-services-2014-09-08?mod=mw_share_twitter

Page 38: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  2.0  

•  YAML  support  (along  with  JSON)  •  OAuth  2.0  enabled    •  Migrated  to  Java  •  Won’t  be  compaMble  with  1.x    

Page 39: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger.io  

Page 40: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  Tools  

Page 41: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  UI  

Page 42: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  Tools  

Page 43: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Swagger  Tools  

Page 44: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

AlternaMves  

Page 45: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

•  SOAP/WSDL  –  h?p://www.w3.org/TR/wsdl  

•  WADL  –  h?p://en.wikipedia.org/wiki/Web_ApplicaJon_DescripJon_Language  

•  Mashery  IO-­‐Docs    –  h?p://www.mashery.com/product/io-­‐docs  –  h?ps://github.com/mashery/iodocs  

•  hFp://apiary.io/  •  MuleSoP  (RAML)  

–  h?p://api-­‐portal.anypoint.mulesoL.com/raml-­‐tools?ref=apihub  

•  Homegrown  

Page 46: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

References  •  Swagger  home:    

–  h?ps://developers.helloreverb.com/swagger/  

•  Swagger  specificaMon  –  h?ps://github.com/wordnik/swagger-­‐core/wiki  

•  Swagger  Demo  –  h?p://petstore.swagger.wordnik.com/  

•  Swagger.io  •  Swagger  editor  

–  h?p://editor.swagger.io/  

•  Wordnik  APIs  –  h?p://developer.wordnik.com/docs.html#!/account  

Page 47: Swagger - Make your REST APIs accessible - Victor Trakhtenberg

Make  your  API  accessible  

Use  Swagger!