We have learned how to use three frameworks that simplify writing microservices: Rouille, Nickel, and Rocket. But all of these frameworks are synchronous. If you want to write an asynchronous microservice, you have three paths to choose from: using the hyper crate directly, as we did in Chapter 2, Developing a Microservice with Hyper Crate; using the gotham crate, which uses hyper and tokio internally; or using the actix-web framework. In this section, we will learn how to use the gotham crate with the asynchronous tokio-postgres crate to work with PostgreSQL asynchronously. We will learn about the actix-web crate later, in Chapter 11, Involving Concurrency with Actors and Actix Crate.
As an example of using the gotham crate, we will create a microservice that takes the User-Agent header from a request and stores it in a PostgreSQL database...