A http server built in Go that's capable of handling GET/POST requests, serving files, gzip compression and handling multiple concurrent connections.
go v1.22
To simplify the build and run process, you can use the following Makefile commands:
make all - test and build the application
make build - build the application and output the executable into /dist
make run - build and run the application
make fmt - format the codebase with go fmt
make test - run the unit tests
To build and run the HTTP server using Docker, you can use the following commands:
make docker-build - build the docker image
make docker-run - run the image exposed on port 8080
curl -v GET http://localhost:4221/ - get a 200 response
curl -v GET http://localhost:4221/notfound - get a 404 response
curl -v http://localhost:4221/echo/hello - get a response body
curl -v http://localhost:4221/user-agent - get the request headers
curl -v GET http://localhost:4221/files/non-existent - get a file (need to create the folder first)
curl -v POST http://localhost:4221/files/README.md - post a file