Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Design First Web APIs - OpenAPI 3
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Roger Camargo
June 02, 2021
Programming
1
110
Design First Web APIs - OpenAPI 3
Design first web APIs and why Django did not help!
Roger Camargo
June 02, 2021
Tweet
Share
More Decks by Roger Camargo
See All by Roger Camargo
AWS Lambda, Rodar local, com testes, IaC e Deploy via ansible
huogerac
1
25
Mapa de estudo dev frontend 2023
huogerac
1
86
Documentando API no Django com django-ninja
huogerac
1
120
Um pouco da origem para chegar no WSGI
huogerac
0
50
"API Design First" pt-br
huogerac
0
270
3 Arquiteturas Django
huogerac
1
320
Django ORM vs SQLAlchemy (queries)
huogerac
0
180
Django ORM vs SQLAlchemy (intro)
huogerac
0
95
Site Imobiliario Django
huogerac
0
110
Other Decks in Programming
See All in Programming
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
680
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
MUSUBIXとは
nahisaho
0
120
Grafana:建立系統全知視角的捷徑
blueswen
0
320
CSC307 Lecture 04
javiergs
PRO
0
650
AI & Enginnering
codelynx
0
110
CSC307 Lecture 03
javiergs
PRO
1
490
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
640
Basic Architectures
denyspoltorak
0
660
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
190
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
540
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
130
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
Skip the Path - Find Your Career Trail
mkilby
0
52
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
71
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
First, design no harm
axbom
PRO
2
1.1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
170
Bash Introduction
62gerente
615
210k
Utilizing Notion as your number one productivity tool
mfonobong
2
210
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
New Earth Scene 8
popppiees
1
1.5k
Transcript
Design first APIs and why Django did not help! by
Roger Camargo - Jun/2021
Design first APIs and why Django did not help! WEB
by Roger Camargo - Jun/2021
DISCLAIMER
Why API?
Backend Data Frontend API Code is the documentation. (It’s okay)
👉
Backend Data Client 1 API Client 2 Where is the
API documentation? 👉
Backend Data Client 1 API System A SDK Client JS
System B Client 2
Backend Data Client 1 API Client 2 System A SDK
Client JS System B Internet It can be hard to keep an API documentation updated... 👉
How to use your API? What are the endpoints? Methods?
Status codes??
How to use your API? What are the endpoints? Methods?
Status codes?? https://http.cat/
/users Code-First, Write Docs "When We Have Time" 👉 It
means "We will not write documentation"
201 API Specs/Docs
👉 It can fail to maintain parity between our documentation
and our underlying implementation API Specs/Docs
OpenAPI Specification (OAS3)
What is OAS3? - Contract for defining RESTful APIs -
Source of truth for everyone - Open source, evolving standard - Collection of tools - Language-agnostic - Readable by both humans and machines
What is OAS3? - Design by contract (YAML) (The pragmatic
programmer) - Get feedback on the API before coding - Easier to make changes - One source of truth - Generate code, mock, tests, docs etc...
Wait... Big design up front?
https://editor.swagger.io/ 👉 One source of truth
https://github.com/zalando/connexion 👉
Low coupling, High cohesion
api.py YAML service.py (CONTRACT) Routes Request validation Response validation Schema
casting FACADE API Layer Business Layer DATA ORM
Django land...
Models Managers TEMPLATE FILTERS Exception Middlewares View Exception Handlers
/polls/
Django It’s hard to produce API Guided by the YAML
contract...
However, there is django-ninja DOCS Code first, but there is
an API documentation 👉
The design first way… (Flask, Falcon etc…)
Automatic live documentation API Mock server Frontend For quick UX
validation Quick feedback Frontend TEAM Backend TEAM Real Implementation API Tests Business Tests Minimize the ReWork YAML
Design first API Links: https://swagger.io/resources/webinars/adopting-a-design-first-approach/ https://apisyouwonthate.com/blog/api-design-first-vs-code-first https://docs.djangoproject.com/en/3.2/ref/request-response/ https://www.openapis.org/ https://github.com/zalando/connexion https://http.cat/
Tools: https://editor.swagger.io/ https://stoplight.io/ Code sample: https://github.com/billcode/jarless Books https://www.goodreads.com/book/show/4099.The_Pragmatic_Programmer
THANK YOU Keep in touch @huogerac https://huogerac.hashnode.dev
[email protected]
https://speakerdeck.com/huogerac