Designing REST API architecture
The REST architecture consists of three layers. The architecture is shown in the picture below.
The web layer is the top layer in the architecture. It is responsible for processing user queries and returning back responses to the user. These operations happen in the controllers. The web layer handles exceptions which have appeared in the other layers. If the REST API is secured, the authentication process is handled in the web layer.
The service layer is located below the web layer. It applies additional business logic on client requests before passing the request to the next layer. The data provided from the Repository layer can also be transformed in the Service layer before passing it back to the user as a response. The design principle ‘Separation of concerns’ is achieved by placing business logic in the service layer. Thus the controllers located in the web layer remain clear of business logic.
The repository layer is the bottom layer in the architecture. It is responsible for communicating with the database. The CRUD (Create, Read, Update, Delete) operations are performed in the repository layer.
In the next article we will see a complete example of implementing the REST architecture in a real REST API.
Repository is a class which purpose is to provide a clean API for accessing data. What that means is that the Repository can gather data from different data sources(different REST APIs, cache, local database storage) and it provides this data to the rest of the app.