Design and implementation of an API Gateway based on NodeJS and Express

Sergio Gil Rodríguez. (2019). Design and implementation of an API Gateway based on NodeJS and Express. Final Career Project (TFG). Universidad Politécnica de Madrid, ETSI Telecomunicación.

For years now we can say that web technologies are completely integrated into our lives. Web applications have become one of the main tools through which we interact with the world and perform our daily activities. It is hard to find an area in which these information systems do not play a role or offer us a service. This implies the storage, management and provision of a large amount of information from diverse sources and nature. It is becoming more common that in order to offer a complex service through a web application, information from multiple independent systems must be obtained and processed. This requires the development team to interact with different interfaces, documentation and design as well as security criteria. This paper proposes a platform that serves as a publication manager for these HTTP interfaces (APIs), being the only responsible for the interaction with the backend systems that expose them. As a result, it is possible to offer a uniform interface and an abstraction of the particularities of each system to the different client applications that need their consumption. To this end, this API gateway must enable its users to specify how the information in a backend system should be consumed, how this information will be exposed to consumers, and what role the gateway will have to play as an intermediary, to turn what the backend system exposes into what it is intended to offer to consumers. Throughout the study, it is designed and developed an architecture that allows this task, taking into account scalability and the different situations and requirements that may occur in the future in a system that aims to accommodate any possible HTTP API. The following is a case study that justifies the need for this gateway for a fictional scenario, and is resolved through its use. Finally, it presents the conclusions drawn from this work and possible lines of work to extend its functionality.