This project serves as a comprehensive tutorial for building a web service using the Rust programming language. It covers various aspects, from setting up a PostgreSQL database to handling JSON responses.
- Rust: The core programming language used for this project.
- Tokio: An asynchronous runtime for Rust.
- SQLx: A Rust library for connecting to PostgreSQL databases.
- Dotenv: A Rust crate for handling
.env
files. - Serde: A Rust crate for serializing and deserializing data structures.
- Actix-Web: A Rust framework for building web services.
- Chrono: A time manipulation library for Rust.
To generate documentation for this project:
cargo doc --open
Alternatively, you can find documentation for each crate on docs.rs.
- Ensure you have Docker Compose installed. If not, you can download it from Docker Desktop.
-
Environment Variables: Copy the sample environment file and configure the variables.
cp env.example .env
-
Docker Compose: Start the Docker containers.
docker compose up -d
-
Upload Postman Collection: Open up Postman locally via the desktop client. Then upload the file entitled
Web Service Tutorial.postman_collection.json
. You should now have access to the Postman collection. -
Get a Bearer Token:
- Go to the
create_user
route under theauth
folder. - Create a user by hitting the
Send
button. If there's a problem, change both the username and password. - After you have successfully created a new user, check the headers. Under the
authorization
header, you should see the bearer token. Copy everything after where it saysBearer
. - Now click on the
Web Service Tutorial
Postman collection. - Under the
Authorization
page, you should see aType
dropdown. - Select
Bearer Token
. After you selectBearer Token
, underneath should apear another dropdown that saysToken
. Paste the copied bearer token here from before. You should now be authorized for four hours, or for however longJWT_HOURS_ACTIVE
is set to in your .env file. - If you have any issues hitting the routes, try changing every
localhost:8080
tohttp://127.0.0.1:8080
- Go to the
-
Test Routes: Open your browser or use a tool like Postman to hit the following route:
http://127.0.0.1:8080/blog
- Access the PgAdmin4 interface at
http://localhost:16543
. - Username:
[email protected]
- Password:
test
For detailed instructions on adding a PostgreSQL server in PgAdmin4, refer to the PG Admin guide.
The init.sql
file contains the SQL statements that define the database schema. Feel free to explore it to understand the database structure.
The SKIP_AUTH
environment variable controls JWT authentication. Set it to true
to disable JWT during development.