June 17, 2021
API Design Best Practices for Developing Digital Platforms
With more and more people working from home, and with consumers looking to avoid physical touchpoints, digital platforms now play a more important role than ever in making business happen. It’s how employees collaborate and share information with each other and with customers and partners. It’s how consumers can buy products and services without having to visit stores and giving them the ability to limit physical contact.
The key agents within digital platforms are Application Programming Interfaces (APIs). They make it possible for applications to integrate so they can share data and services, enabling people to work more efficiently and pay for goods quickly.
In this article, we examine the elements of API design. After all, design is of the essence when it comes to your APIs. It’s what drives how much your API gets used and whether it will be easy for you to maintain and update so you can sustain usage over the long run.
A Business Leader’s Guide to APIs
API Design Best Practices
The basic elements of API design include the syntax and the code as well as the interface. You want your APIs to not only be visually appealing, but also easy for developers to understand so they can quickly integrate their applications with your API. Another key design element is how you structure and document the API resources.
As you work on your API design, take a collaborative approach. Check your design with the others on your team. This will help ensure internal consistency among all API designs and that everyone on the team follows established conventions.
The first step in the API design process is to define the specifications. This will help developers and consumers understand the design. The specification should include how the API works, the different ways developers can leverage the API, and the response types generated by the API.
There are multiple tools for building specifications including OpenAPI, which is perhaps the most popular among developers, but you can also consider JSON schema, API Blueprint and RAML. Another basic element of API design is the various use-cases. Construct your use-cases from the perspective of the developers who will consume your API.
In other words, what services will they want your API to provide to their application? To answer this question accurately, it’s best to talk to a representative mix of the developer audience you expect to work with your API. Find out how their applications work and what sort of functionality they are looking to add.
3 Patterns for Designing APIs
As you get into the design of your API, there are three main pattern elements to consider:
Sorting provides a way for users to access data without allowing them to tap into your entire database. Determine the default sort order you prefer for results, such as <A to Z> or <Most Recent Date>, and make the default consistent for each endpoint. To return sort results quickly, use query string parameters with potential values for each of the field names in your responses.
Paging allows you to set default page sizes to avoid returning too many call results, which could cause latency. This can be detrimental for both your internal API server as well as the devices of target applications. You can also allow consumers of the API to adjust page sizes within a set range or let them request results from a specific page.
Filtering relieves the workload on databases and allows consumers to control the call results. You can restrict filters based on the values that the results generate and control which fields consumers can filter. For simple filters, limit each field’s query strings to one or two parameters.
Another key aspect of API design is adding hypermedia links, which enable developers to browse your API to see the available resources. As an example, you can link abbreviated object versions to complete object versions. You can also provide hypermedia links to allow consumers to page through results.
Seeing the Forest: Tips for Designing APIs
As you design an API, it can be easy to focus on the details discussed above so intently that you “can’t see the forest for the trees.” So try to also keep these big-picture considerations in mind as you work on the details of the design:
- Enable all clients to make calls. Rely on standard protocols and configure mechanisms so all client applications (regardless of the platform) and the API service can reconcile the formats with each other for any data they exchange.
- Add functionality without impacting client applications. As you code new functions for the API, allow client applications that already use the API to continue functioning without their developers having to apply modifications. Also, make it easy to discover new functions so developers of client applications can take advantage of your work.
- Keep developers in mind. You want developers to be able to memorize the resources and operations you set up, so keep them simple. Implementation and integration processes should also be concise and allow developers to code robust applications according to what the exposed API services allow. Another key is to avoid base URLs that are long so developers can use them easily in their applications.
Be sure to also lighten the load on your API server. Your APIs should provide the basic components to integrate your API with applications (including data and resources), but be careful of how much data you expose through your resources.
Otherwise, you could negatively impact the performance of your API server. This can be handled by setting appropriate query parameters to limit responses or by isolating components of data a client requests using path parameters.
Always Design Before Building
Closely managing the design phase of API development is critical. If you build before you design and things go wrong, the mess you create will be expensive to fix. You likely won’t be able to recover without throwing away all of your work. You’ll be better off just starting all over again. Either way, your development costs relative to the project will skyrocket.
When you design before you build, you get early feedback as you collaborate with colleagues and talk with the end-users of your API. This approach greatly increases your chance of success right out of the gate and over the long-term life of your API.