Rootconf 2018

Rootconf 2018

On scaling infrastructure and operations

Anand Chitipothu


Designing RESTful APIs

Submitted Mar 27, 2018

REST a simple architectural style based on the priniciples of HTTP for building modern web applications and APIs. This hands-on workshop takes you though 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. Partipants will be divided into smaller groups to allow discussions and most of the time is spent in thinking about the APIs and discussions.


  • 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

Speaker bio

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, a micro web framework in Python. He has worked at Strand Life Sciences and Internet Archive.




{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}