Skip to content
Snippets Groups Projects

Resources service

What it does

This service can provide lists of resources and formats.
A resource is an entity representing some information, usually geographic, that can be accessed by a query (for example Web Map Service) or by downloading a file. One resource can be considered standard (e.g WMS protocol) or not standard (a custom service).
Each resource is associated with one or many formats.

Example:
the output of a Web Feature Service (WFS), standard service providing an interface for geographical features, is a resource. And it is associated with many formats as such Shapefile or JSON.

How it works

resources-service

The entrypoint of the service is a REST API provided by a NestJS application. This backend application interacts with a PostgresSQL database through an ORM called TypeORM.

API documentation

NestJS provides a swagger module that can be easily integrated. Using specific annotations alongside your endpoints declaration, this module will automatically generates a swagger documentation, reachable at /api-doc.

Service health

NestJS provides a health module based on Terminus, that gives you the opportunity to declare predefined or custom health indicators. It exposes the health status of the service at /health.
This service will return a 200 http status code when all indicators are healthy. Otherwise it will return a 503 http status code.

For this service we declared an health indicator that verifies that it can connect to the database.

Stats

We are using a Node module called swagger-stats.
It traces API calls, monitors API performance and usage statistics. It exposes the metrics in different formats, such as Prometheus format, so you may use Prometheus and Graphana for API monitoring and alerting.
Those metrics are available at /swagger-stats/metrics.

For more information about this module, visit the official swagger-stat page.

Docker

It is possible to run this service using Docker containers, using the docker-compose.yml and Dockerfile files.
For more information, refer to the project [organizations-service][add a link]