About the API Design Course

Learn about the value of this course and why you should take it.

Introduction

API design plays a significant role in the product development lifecycle because it touches many aspects of full-stack development. For example:

  • It clarifies the need for technical resources for an API.

  • It ensures faster codingWhen developers know what to code, they can get things done quickly and correctly. by improving the development experience.

  • It reduces development costs and the risk of failure.

The value of APIs can be realized from the statistics provided by Akamai“Akamai State of the Internet Security Report: Retailers Most Common Credential Stuffing Attack Victim; Points to Dramatic Rise in API Traffic as Key Trend | Akamai,” February 26, 2019. https://www.akamai.com/newsroom/press-release/state-of-the-internet-security-retail-attacks-and-api-traffic.. According to them, 83% of web traffic is API calls. Let’s take a look at the graph below, which depicts the increase in the number of APIs being developed over the years:

Growth rate of the number of APIs over the years

Course features

Some key features of this course are given below.

Hyperfocused on concepts: API design depends on many concepts you might already know. We’ll be reviewing them throughout this course. However, the emphasis is placed on core concepts that are imperative to mastering the art of API design.

We’ll spend a good amount of time focusing on concepts like HTTP (Hypertext-Transfer Protocol) protocols, API architectural styles, security, and idempotency before moving on to the actual design problems. This will ensure that we understand every important concept in detail before we dive into designing an actual API.

Incremental difficulty: We’ll start off with relatively small design problems, such as the creation of a comment service API, to see how our components can come together and to understand the creation process. Doing this on a small design problem will make it easier to understand the concepts without getting lost in the problem.

We’ll then move on to more complicated systems and see how we can implement them by using the small design problems as building blocks.

Active learning: We’ll guide you through the process of designing APIs by putting you in the designer’s chair! We’ll analyze the requirements and see which of the studied components we need to incorporate to make a satisfactory design for our problems. We’ll follow an iterative process where we take a problem and design its solution. Then, we’ll identify the bottlenecks and shortcomings and improve the existing design. Additionally, we’ll also identify the optimizations and tradeoffs to choose the best option from a set of mechanisms.

Furthermore, after we've learned the machinations behind a complex API design, we’ll be tested on our newly acquired knowledge by attempting to solve a design problem derived from the ones you studied earlier in this course.

Revamping API design: Existing API design resources on the internet discuss feeble aspectsUnproductive concepts with outdated technical paradigms. of API design. Our course attempts to redesign the API of modern APIs and see how you can learn from them and implement their good design practices into your work. This course doesn’t give boilerplate solutions and instead provides reasons for the different design decisions made at each step. We also discuss the optimization and improvement techniques of our solutions.

Note: This course also provides you with challenging and thought-provoking quizzes to test you on what you’ve learned and open your minds to the concepts and thought process that goes into API design.

Who should take this course?

The API design course is important for software developers who want to advance in their careers. The following audiences will find this course helpful:

  • Interviewees: This course is ideal for those who are in the process of preparing for interviews related to API design. A lot of tech giants focus on a candidate’s understanding of design concepts. This course prepares you to ace those kinds of interviews in an easily understandable way.

  • Software developers: This API design course is primarily for developers looking to excel in their careers. Full-stack engineers have a lot of technologies on their plate and back-end and front-end engineers tend to stay focused on their domains; as a result, API development is not so trivial as it connects the two. Building APIs is not easy, and our course can be an excellent starting point. This course enables front-end developers to be more aware of how requests are processed and forwarded to the backend for processing. At the same time, back-end engineers can improve in their roles by gaining knowledge about preparing responses for the frontend.

  • Product/project managers: Managers define requirements and design specifications for the developers. This course will provide a birds-eye view to managers about their product's specifications and help them better understand the process so that they can communicate efficiently with their engineering team.

  • API designers: While API design can be difficult to learn, few resources are available to teach the skill effectively. This course is a great option if you’re interested in learning API design from scratch.

Prerequisites

We assume that you have fundamental knowledge of API development. But the question is, can you still take this course if you don't have a foundation in APIs? Yes! This course gives a detailed overview of all the basic concepts in designing and developing an API.

Knowledge in the following areas will also enable you to grasp the core concepts easily and improve your understanding of this course:

  • System design: The API design connects clients’ requests to back-end services. You can better understand API design if you have a good idea of what happens in the backend. Although we’ll assume that the back-end system is designed to be ready to entertain requests of any scale, having a good understanding of the system's work on the backend will allow you to take full advantage of this course. For this, Educative’s course on system design is a great resource.

  • Basic networking: APIs serve data to clients over the web, and as such, a basic understanding of how data is sent over the web is beneficial for a deeper understanding of this course. Educative has an excellent course on networking that you can refer to.

Apart from these two core concepts, getting a fundamental understanding of distributed systems and operating systems concepts is good.

Structure of the course

This course is structured to To divide things in to sections.separate concepts into sections based on the topic of the content. We’ve divided it into the following sections:

  • Prologue: The prologue section introduces the course and gives the learner a clear idea of why design is vital in API development. Apart from that, it also discusses the implication of design over the business and vice versa.

  • Background: This section has seven chapters that expand on the fundamental knowledge required to design APIs effectively. It also has a Back-of-the-envelope Calculations for Latency chapter that enables us to calculate the response time of different API calls in different design problems we’ll solve. If you are well-versed in these concepts, you may skip this section, but it can serve as a good refresher for those who are interested.

  • Design: This section is the backbone of this course and is divided into two subsections. The first section has designs of commonly used APIs like search, comment, file upload, etc. We call these foundational-design problems. The second section teaches the design of bigger problems like YouTube, LeetCode, Zoom, etc. We refer to them as advanced-design problems.

  • Epilogue: This section discusses interesting and spectacular failures witnessed in the IT world due to a lackluster API design and what we, as API designers, can learn from it. We'll also touch upon the next steps for us to follow.

The structure of the course

Note: In the markmap above, clicking on the blue text will redirect you to the relevant chapter.