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.)
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
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!!!
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
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
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.