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.
As we said in the previous article Model is the data in our application. These are classes representing objects that we persist in our database or that we get from network calls to services.
Accessing an API back-end from Angular client may result in missing response headers. A common scenario is a missing Authorization header, containing the JSON Web Token (JWT) which is returned from the back-end service when the user logs in successfully.