1.2 KiB
1.2 KiB
go-http-server
A minimal TCP-based HTTP server in Go for learning and experimentation. It demonstrates manual request-line and header parsing and simple connection handling.
Requires
- Go 1.26 or newer.
Quick start
- Build
- cd into the project root (the directory that contains
go-http-server) and run:cd go-http-server go build -o go-http-server
- cd into the project root (the directory that contains
- Run
- Start the server:
./go-http-server - Or during development:
go run .
- Start the server:
Testing
- Run unit tests:
cd go-http-server go test ./...
What’s in the repo
main.go— listener and connection lifecycle.readheaders.go—readHeadersandparseRequestLinelogic; returns aHeadersstruct.response_helper— helpers for writing responses.config— runtime configuration (listen address, profiling toggle).
Notes
- The parser expects a request-line with exactly three tokens:
METHOD URI PROTO. - Header lines without a colon are ignored; values are trimmed.
- The server supports simple keep-alive behavior when the
Connection: keep-aliveheader is present.
Contributing
- Open issues or PRs. Add tests for parsing or new behavior and run
go test ./...before submitting.
License
- MIT