Rest API Development
Facebook, GitHub, Netflix, and few other tech monsters have given a red carpet welcome to developers to exploit their data using APIs. Today, it is becoming a trend for innovative tech platforms to elevate their platform with beautifully composed REST APIs.
API is a reflective interface through which developers communicate with the data. With the support of a beautifully structured and designed API, ease and comfort can be introduced into the developer’s life. However, the critical point here is – perfectly designed REST APIs. If the REST API isn’t designed flawlessly, it can create problems for developers instead of easing the user experience. Thus, it is highly critical to use the commonly followed conventions of API design to serve the best solution to your clients or developers.
Best practices to design rest API’s
Source: Astera Software
When you are aiming to bring ease and smoothness in your API user’s life, then you have to follow the path of the best REST API design practices to avoid tripping over your API’s syntax mess. The tried and tested conventions to follow while designing REST APIs are:
1. Rest API must accept and respond with JSON
It is a common practice that APIs should accept JSON requests as the payload and also send responses back. JSON is a open and standardized format for data transfer. It is derived from JavaScript in a way to encode and decode JSON via the Fetch API or another HTTP client. Moreover, server-side technologies have libraries that can decode JSON without any hassle.
Let’s have a look at an example of API where JSON accepts payloads. A screenshot from Postman to send JSON to our API.
2. Go with error status codes
Over 100 status codes have already been built by HTTP. It is a boon for developers to use status codes in their REST API design. With the status codes, developers can instantly identify the issue, which reduces the time of writing parsers to address all the different types of errors. There’s a status code for everything – from finding out the cause of a denied session to locating the missing resource. Developers can quickly implement routines for managing numerous errors based on status codes.
Source: Hackernoon
3. Don’t use verbs in URL’s
If you understood the APIs' basics, you would know that inserting verbs in the URL isn’t a good idea. The reason behind this is that HTTP has to be self-sufficient to describe the purpose of the action. Let’s take an example when you want endpoint to produce a banner image for a post; you have to note the :param is a placeholder for a URI parameter. Your first extinct might be to create this endpoint:
GET: /articles/:slug/generateBanner/
The GET method is only able to say here that you just want to retrieve a banner. So, using this syntax might be beneficial:
GET: /articles/:slug/banner/
Similarly, for the endpoint, it might generate the new article, as shown in this example.
Don't use
POST: /articles/createNewArticle/
Do use
POST: /articles/
4. Use plural nouns to name a collection
When you have to develop the collection in REST API, just go with plural nouns. It makes it easier for humans to understand the meaning of collection without actually opening it. Let’s go through this example:
GET /cars/123
POST /cars
GET /cars
It is clear from the example that ‘car’ is referred to as number 123 from the entire list of "cars". The usage of a plural noun is merely indicating that this is a collection of different cars. Now, look at one another example:
GET /car/123
POST /car
GET /car
This example doesn’t clearly show whether there is more than one car in the system or not. For a human reader, it might be challenging to understand, as well.
5. Well compiled documentation
Documentation is one of the important but highly ignored aspects of a REST API structure. The documentation is the first point in the hands of customers to understand the product and critical deciding factor whether to use it or not. One good documentation is neatly presented in a proper flow to make an API development process quicker.
It is a simple principle – the faster developers understand your API, the faster they start using it. Your API documentation must be compiled with precision. It must include all the relevant information such as the endpoint and compatible methods, different parameter options, numerous types of data, and so on. The documentation should be so robust that it can easily walk a new user through your API design.
6. Return error details in the response body
It is convenient for the API endpoint to return error details in the JSON or response body to help a user with debugging. If you can explicitly include the affected field in error, this will be special kudos to you.
7. Use resource nesting
Resource objectives always contain some sort of functional hierarchy or are interlinked to one another. However, it is still ideal to limit the nesting to one level in the REST API. Too many nested levels can lose their elegant appeal. If you take a case of the online store into consideration, we can see “users” and “orders” are part of stores. Orders belong to some user; therefore the endpoint structure looks like:
/users // list all users
/users/123 // specific user
/users/123/orders // list of orders that belong to a specific user
/users/123/orders/0001 // specific order of a specific users order list
Source: https://www.merixstudio.com/blog/best-practices-rest-api-development/
8. Use SSL/TLS
When you have to encrypt the communication with your API, always use SSL/TLS. Use this feature without asking any questions.
9. Secure your API
It is a favorite pastime for hackers to use automated scripts to attack your API server. Thus, your API needs to follow proactive security measures to run operations while safeguarding your sensitive data smoothly. Foremost, your API must have an HTTP Strict Transport Security (HSTS) policy. Up next, you should secure your network from middle man attacks, protocol downgrade attacks, session hijacking, etc., Just use all the relevant security standards to the security of your API.
Perfectly designed REST API stays on the positive side of technical constraints along with taking user experience-based solutions. API is a part of the business strategy; it is a marketing tool for the organization, thus it is essential to execute APIs in the right manner. That’s because unstructured API is a liability rather than an asset.