Education

REST API Design Best Practices to Make Your Life Easier

logo

DhiWise

August 9, 2022
image
Author
logo

DhiWise

{
August 9, 2022
}

In the modern Web Development ecosystem, REST API plays a crucial role in ensuring the smooth exchange of information between the client and the server. Therefore it became necessary to design the APIS with the best practices in mind. 

This article guides you through the best practices for API designing and development that helps you to build a secure and highly functional application. 

So let's begin with the introduction to REST API.

What is REST API?

A REST API, also known as RESTful API, is an application programming interface (API) bound to follow the REST design principles. REST stood for representational state transfer and was first introduced by computer scientist Roy Fielding in the year 2000.

The API that follows the REST design principles is said to be RESTful. The style guide helps with web design architecture development. 

A well-designed API aims to support mainly two things:

  • The platform independence: With it, any client can call the API regardless of its implementation  dynamics. 
  • The service evolution: Functionally independent APIs can easily evolve without making any modifications to the client app.

REST API design best practices 

1. Use JSON as the data serialization format, supported by almost every popular programming language.

When you want to save, send and receive the data flowing in and out of the application, there may be different data serialization formats to choose from, such as XML and even HTML. However, today JSON ( JavaScript Object Notation) became the most preferred format for sending and receiving API data. 

As in the case of most other formats, it's a little bit difficult to decode and encode data. There are many web APIs out there that use JSON for data serialization. 

For example, XML takes a longer processing time and may cause memory overhead as it is designed for many other things than data interchange. On the other hand, JSON is designed specifically for data interchange and thus takes less time while encoding and decoding. 

2. Use filtering for searching and pagination. 

What if you need a subset of information but end up getting the entire collection of the data. It happens if you are trying to fetch the data using a single URI. In such a case, the collection of data accessed is filtered on the client side. Accessing large amounts of data consumes unnecessary network bandwidth and processing power, making the process highly inefficient. 

So, what can be the right way to retrieve the data?

API allows passing the query string in the URI mainly for the two special cases of filtering: searching and pagination. For example, if you have an /product endpoint (products for sale), these items can be filtered using the property name such as GET/product?state=active or GET/product?state=active&seller_id=1111. 

However, it only works if you want to get the exact matches. To get the ranges use LHS brackets, for example- GET/product?price[gte]=100&price[lte]=1000. This query will find all the items where the price is greater than or equal to 100 but less than or equal to 1000.

So in this way, using the query string, you can limit the amount of data accessed during a single request. 

3. Handle errors gracefully by using HTTP status codes

Always use HTTP status codes in the responses to the request made to your API. It helps end-users figure out what's happening behind the scenes- whether the request is successful or fails or if there is something else. 

Here are some typical error conditions that might be encountered when processing the HTTP request.

Error condition HTTP status code
Informational Responses 100-199
Request has to be redirected for various reasons 300-399
Malformed patch document 400 (Bad request)
The patch document format isn't supported 415 (Unsupported Media Type)
Resource not found 404
Internal server Error 500

When such errors occur, the error codes need to have a message following them. So that the provider and the end-user both have enough information to troubleshoot the issue and take corrective action. 

5. Follow the naming conventions for the REST API resources and endpoints

Here are some naming conventions that one should follow for the REST API resources and endpoints.

1. Use nouns instead of verbs for representing resources

RESTful URIs should refer to the resources, i.e thing (noun), instead of referring to the action (verb) because nouns have properties whereas verbs do not.

Do’s Don’t
/my-folder /createFolder
/@registry /deleteDocument
/@types /updateEvent

2. Use plural resources to retrieve the list 

Mixing singular and plural can be confusing; therefore, use the plural for the collections such as resources. For example, use /users to retrieve the list of users instead of using /user.

Do’s Don’t
/users /user
/users/21 /user/21

3. Use plural for URL parameters that contain one or multiple items and use the singular for parameters that contain only a single item.  

The name of the URL parameter should clearly indicate what an attribute expects, a single or multiple items. It's always better to use the plural form rather than appending a possible type such as _list, _array, or _set to the variable name. For example, use /tokens instead of /token, /token_list, /token_array.

4. Use lowercase letters in URIs

RFC 3986 defines URIs as case-sensitive except for the scheme and the host components. To avoid any confusion it is always better to use the lowercase letter in the URIs.

For example, use https://example.org/my-folder/my-document instead of HTTPS://EXAMPLE.ORG/my-folder/my-document.

5. Use hyphens to improve the readability of URIs.

A spinal case is easier to read and safe to use than the camelCase, especially in the case of URLs, therefore Google recommends using a spinal case in URLs for better search engine optimization.

5. Versioning APIs

Versioning comes into the picture when the API provider needs to ship the different versions of APIs at the same time. Versioning is done according to the semantic version when you are making any changes to the APIs. 

It helps to phase out the old endpoints instead of forcing everything to the new API. For example, the v1 endpoint can be used by the end-users who want to stick to the old interface with limited features and v2 is good for the users who want to go with an interface having new features. 

With REST APIs versioning you are not forcing the users to migrate to the new version it completely depends on the user's convenience and their choice. 

6. Well-written API documentation 

API documents are the collection of references, tutorials, and examples that help developers to understand and use your APIs. It is the primary resource that tells users what is possible with your API and how to get started. Also, it serves as a place to ask your questions about syntax and functionality. 

Therefore the best API document must contain,

  • Relevant endpoints of the API
  • The references and the functionality
  • Examples requests of the endpoints
  • Implementation in the programming languages and the use cases
  • Guide to using the API along with the possible errors and their status code

This is all about the Rest API design best practices. By following these guidelines you can build a highly functional app that works well making your life easier. 

So do you want to simplify your API documentation while building an application?

DhiWise makes it super easy by allowing app development and API documentation using a single platform. DhiWise supports Postman, Swagger, and HTML-based API documentation. With it, you can access, view,  and update the APIs as per your requirements.  

The platform allows you to collaborate with your team, upload Postman collections, and much more. Overall it helps you to reduce the time spent on API documentation and app development without affecting the work quality. 

Watch our video for more details about API documentation using DhiWise.

Want to try this amazing platform? Sign up here.

Thank you for reading!