Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building a Django API and SDK

Pablo
April 19, 2016

Building a Django API and SDK

Pablo

April 19, 2016
Tweet

Other Decks in Technology

Transcript

  1. • Django Rest Framework • Swagger Specification • Django Rest

    Swagger • Apimatic.io • Live Demo • Tips and Advices • Questions
  2. Django REST Framework (DRF) “Django REST framework is a powerful

    and flexible toolkit for building Web APIs.” A collection of generic classes + Authentication (tokens, sessions, oauth, etc) + Serializers / Renders + Some useful tools (tests, throttling, etc.)
  3. Swagger Specification “Swagger is a simple yet powerful representation of

    your RESTful API” • Not a library, not code, just a JSON file. • Lots of goodies: ◦ Swagger UI to build a documentation reference or a sandbox for users ◦ Swagger Editor / Validator ◦ Swagger Codegen creates the code for client and server from a swagger file
  4. Django Rest Swagger “Django REST Swagger is a library that

    generates Swagger documentation from your Django Rest Framework API code.” • The bad news: generates a Swagger v 1.0 and not Swagger 2.0 • The good news: In Botify we’ve forked repo and changed a lot the code to produce a Swagger 2.0 • The bad news: The code is too specific (and dirty) that it won’t probably fit your needs. • The good news: You can fork Django Rest Swagger Too!!!
  5. Apimatic.io “Generate high-quality SDKs for your RESTful APIs with our

    customizable codegen engine.” • Long story short: takes your swagger file and generates a SDK • Like Swagger codegen • Saas
  6. Swagger can’t describe everything [ ["John", "[email protected]", true, 1, 9.23,

    false, ["voice", "guitar"]], ["Paul", "[email protected]", false, 2, 7.23, false, ["voice", "bass"]] ["Ringo", "[email protected]", true, 3, 1.23, false, ["drums"]] ... ]
  7. Swagger can’t describe everything { "john": { "id": 1, "email":

    "[email protected]" }, "paul": { "id": 2, "email": "[email protected]" }, "ringo": { "id": 3, "email": "[email protected]" }, ... }
  8. CBV vs FBV, the old debate • Don’t use FBV,

    you can’t introspect them. You might as well write the swagger file manually • Generic Classes are your friends and they help you DRY
  9. To Keep In Mind When Creating an API • Keep

    It Clean ◦ Use serializers ◦ Use Generic classes ◦ Skinny Views (AKA Controllers) • RESTful Is the answer ◦ The more you stay REST, the easier to maintain. ◦ The more you stay normalized (DB), the less bugs you’ll have.