Building a Django API and SDK

Fe876b7f3f32966ceb8b4977feded6a7?s=47 Pablo
April 19, 2016

Building a Django API and SDK

Fe876b7f3f32966ceb8b4977feded6a7?s=128

Pablo

April 19, 2016
Tweet

Transcript

  1. Django API & SDK LEANO Pablo @pablo_amnesiac

  2. • Django Rest Framework • Swagger Specification • Django Rest

    Swagger • Apimatic.io • Live Demo • Tips and Advices • Questions
  3. 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.)
  4. Django REST Framework (DRF) Save data

  5. Django REST Framework (DRF) Get data

  6. 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
  7. Swagger Specification V 2.0

  8. 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!!!
  9. 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
  10. Live Demo

  11. Tips and Advices

  12. Swagger can’t describe everything [ ["John", "john@example.com", true, 1, 9.23,

    false, ["voice", "guitar"]], ["Paul", "paul@example.com", false, 2, 7.23, false, ["voice", "bass"]] ["Ringo", "ringo@example.com", true, 3, 1.23, false, ["drums"]] ... ]
  13. Swagger can’t describe everything { "john": { "id": 1, "email":

    "john@example.com" }, "paul": { "id": 2, "email": "paul@example.com" }, "ringo": { "id": 3, "email": "ringo@example.com" }, ... }
  14. 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
  15. 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.
  16. We’re hiring!!! www.botify.com/jobs

  17. Questions?