Add chi router app and go.mod with chi dependency

This commit is contained in:
2026-01-11 12:46:25 -05:00
parent 386660add2
commit 7ca6f9f4d1
3 changed files with 54 additions and 0 deletions

47
cmd/app/main.go Normal file
View File

@@ -0,0 +1,47 @@
package main
import (
"net/http"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
)
func main() {
// Create a new router
r := chi.NewRouter()
// Add some middleware for logging and recover
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
// Register the hello world handler at the root path
r.Get("/", helloHandler)
// Serve static HTML files from the "static" directory
// (e.g., /static/index.html will be accessible at /static/index.html)
FileServer(r, "/static", http.Dir("./static"))
// Start the HTTP server
http.ListenAndServe(":8080", r)
}
// helloHandler responds with a simple "Hello, World!" message.
func helloHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
}
// FileServer sets up a http.FileServer handler for serving static files.
func FileServer(r chi.Router, publicPath string, root http.FileSystem) {
if publicPath == "" {
publicPath = "/"
}
// Ensure the path ends with a slash
if publicPath[len(publicPath)-1] != '/' {
publicPath += "/"
}
fs := http.StripPrefix(publicPath, http.FileServer(root))
r.Get(publicPath+"*", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fs.ServeHTTP(w, r)
}))
}

5
go.mod Normal file
View File

@@ -0,0 +1,5 @@
module draw-tools
go 1.22
require github.com/go-chi/chi/v5 v5.0.12

2
go.sum Normal file
View File

@@ -0,0 +1,2 @@
github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s=
github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=