Designing RESTful APIs
Anand Chitipothu (~anandology) |
Description:
APIs are all around. Everyone talks about RESTful APIs, but what does “RESTful” really mean? This hands-on workshop takes you through everything that you need to know to design great RESTful APIs.
During the workshop, the participants will understand the key concepts behind RESTful APIs, critically examine some of the popular APIs, design an API from scratch and see how APIs evolve. We'll also take couple of popular APIs, rip them apart and design a better version of them. Participants will be divided into smaller groups to allow discussions and most of the time is spent thinking about the design.
Please note that this is about designing APIs, and not about the tools. Participants will spend lot of time thinking about and designing API endpoints and request/response format, but will not write any code.
OUTLINE
Introduction to HTTP
- Internet vs. World-Wide-Web
- Key Concepts of Web
- URL, HyperText, HTTP
Representational State Transfer (REST)
- What is REST?
- Thinking in Resources
- HTTP Methods
- Status Codes
- Resource Representation
Examples of RESTful APIs
- Good and bad examples of RESTful APIs
Designing an API
- version 0 - Naive CRUD API for blog posts.
- version 1 - blog api made RESTful
- version 2 - add support for tags
- version 3 - add support for comments
- version 4 - add suport for authors
Authentication and Secutity
- Introduction to authentication patterns
- Study of Basic Auth, OAuth, access keys and JWT
- Adding authentication to the blog API
Excercises
Best Practices
- Pratical tips and tricks
- Versioning APIs
- Documenting APIs
Prerequisites:
The workshop is targeted at web developers interested to build APIs. The participants are expected to have good understanding of how web works.
Content URLs:
Speaker Info:
Anand has been crafting beautiful software since a decade and half. He’s now building a data science platform, rorodata, which he recently co-founded. He regularly conducts advanced programming courses through [Pipal Academy]. He is co-author of web.py, a micro web framework in Python. He has worked at Strand Life Sciences and Internet Archive.