example-webserver-rs 0.1.1

Building Rust webserver application with Axum for fun
Documentation
# Example-webserver-rs

Project aims for setting up basic webserver functionality written in Rust and providing a few 
ready-to-use endpoints. It serves for learning purposes and figuring out Rust libraries ecosystem. Implemented
with Axum framework.

## Implemented
From this project one can learn the following concepts:
- How to create HTTP listener and handle incoming traffic
- How to create endpoints executing GET/POST requests
- How to parse JSON payloads and process them
- How to share state between endpoints (either with Clone Trait or Atomic Reference Counting)
- How to parse query parameters
- What are requirements for Handler functions (FromRequest/IntoResponse traits, Extractors)
- How to call another external REST API from inside our endpoint, parse the results and return to user

## Run
Command `cargo run` will build the project and start the webserver on port `3000`. Below are the commands you can 
execute against webserver.

## Examples

1. GET /
```shell
curl -X GET 127.0.0.1:3000
```

2. GET /json
```shell
curl -X GET 127.0.0.1:3000/json
```

3. GET /json-counter
```shell
curl -X GET 127.0.0.1:3000/json-counter
```

4. POST /append
```shell
curl \
    -X POST 127.0.0.1:3000/append \
    -H "Content-Type: application/json" \
    -d '{"data": "hello"}'
```

5. GET /rnd
```shell
curl -X GET 127.0.0.1:3000/rnd
```

6. GET /country
```shell
curl -X GET "127.0.0.1:3000/country?name=usa"
```