Skip to content

Commit 12bbed0

Browse files
committed
application working using gorrila/mux
1 parent 4585046 commit 12bbed0

4 files changed

Lines changed: 49 additions & 27 deletions

File tree

go/samples/http/go.mod

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@ go 1.19
44

55
require (
66
github.com/go-sql-driver/mysql v1.6.0
7-
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.10.0
8-
go.opentelemetry.io/otel/sdk v1.10.0
7+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.11.1
8+
go.opentelemetry.io/otel/sdk v1.11.1
99
)
1010

1111
require (
12-
github.com/julienschmidt/httprouter v1.3.0
12+
github.com/felixge/httpsnoop v1.0.3 // indirect
13+
github.com/gorilla/mux v1.8.0 // indirect
14+
go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.36.4 // indirect
15+
)
16+
17+
require (
18+
github.com/julienschmidt/httprouter v1.3.0
1319
github.com/lib/pq v1.10.7
14-
go.opentelemetry.io/otel v1.10.0 // indirect
20+
go.opentelemetry.io/otel v1.11.1 // indirect
1521
)
1622

1723
require (
@@ -20,6 +26,6 @@ require (
2026
github.com/google/sqlcommenter/go/core v0.0.1-beta
2127
github.com/google/sqlcommenter/go/database/sql v0.0.1-beta
2228
github.com/google/sqlcommenter/go/net/http v0.0.1-beta
23-
go.opentelemetry.io/otel/trace v1.10.0 // indirect
29+
go.opentelemetry.io/otel/trace v1.11.1 // indirect
2430
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6 // indirect
2531
)

go/samples/http/go.sum

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
22
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
3+
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
4+
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
35
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
46
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
57
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -8,26 +10,39 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
810
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
911
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
1012
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
13+
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
1114
github.com/google/sqlcommenter/go/core v0.0.1-beta h1:IVszEHanWVeS7UcmP8C3SHa57CmfeqMBj0QUcJ8VZ9Q=
1215
github.com/google/sqlcommenter/go/core v0.0.1-beta/go.mod h1:CZfcqmbIxngExnZ7Se6AsKNVubZhKyi54aeDJZiqTMQ=
1316
github.com/google/sqlcommenter/go/database/sql v0.0.1-beta h1:N680pEYaRwmOSrQWUd4A4aD4kj4WYxcJTQB9WLe69vY=
1417
github.com/google/sqlcommenter/go/database/sql v0.0.1-beta/go.mod h1:VdswmF4SM0cbjJdD+3GyM5QuXpHhH6F5nSzcbikzCGY=
1518
github.com/google/sqlcommenter/go/net/http v0.0.1-beta h1:7XQ6poZv+ZJwwHWQHlesq9IMsRus3G6Z9n10qAkrGqE=
1619
github.com/google/sqlcommenter/go/net/http v0.0.1-beta/go.mod h1:tVUqM1YZ/K3eRTdGzeav1GSbw+BXNdTGzSAbLW9CxAc=
20+
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
21+
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
1722
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
1823
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
1924
github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
2025
github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
2126
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2227
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
28+
go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.36.4 h1:gn5Cf5XpnENThRBjAHq6vuENFo+l9qwnEMqwmanIYuY=
29+
go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.36.4/go.mod h1:f26RulijcxdgrGSYep0AykXM9ZkWoKVtInstDYUR8EU=
2330
go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4=
2431
go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ=
32+
go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4=
33+
go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE=
2534
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.10.0 h1:c9UtMu/qnbLlVwTwt+ABrURrioEruapIslTDYZHJe2w=
2635
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.10.0/go.mod h1:h3Lrh9t3Dnqp3NPwAZx7i37UFX7xrfnO1D+fuClREOA=
36+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.11.1 h1:3Yvzs7lgOw8MmbxmLRsQGwYdCubFmUHSooKaEhQunFQ=
37+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.11.1/go.mod h1:pyHDt0YlyuENkD2VwHsiRDf+5DfI3EH7pfhUYW6sQUE=
2738
go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY=
2839
go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE=
40+
go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs=
41+
go.opentelemetry.io/otel/sdk v1.11.1/go.mod h1:/l3FE4SupHJ12TduVjUkZtlfFqDCQJlOlithYrdktys=
2942
go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E=
3043
go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM=
44+
go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ=
45+
go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk=
3146
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6 h1:cy1ko5847T/lJ45eyg/7uLprIE/amW5IXxGtEnQdYMI=
3247
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3348
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=

go/samples/http/main.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/google/sqlcommenter/go/core"
1010
gosql "github.com/google/sqlcommenter/go/database/sql"
1111
httpnet "github.com/google/sqlcommenter/go/net/http"
12-
"github.com/julienschmidt/httprouter"
12+
"github.com/gorilla/mux"
1313
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
1414
sdktrace "go.opentelemetry.io/otel/sdk/trace"
1515

@@ -18,8 +18,8 @@ import (
1818
"sqlcommenter-http/todos"
1919
)
2020

21-
func MakeIndexRoute(db *gosql.DB) func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
22-
return func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
21+
func MakeIndexRoute(db *gosql.DB) func(w http.ResponseWriter, r *http.Request) {
22+
return func(w http.ResponseWriter, r *http.Request) {
2323
exp, _ := stdouttrace.New(stdouttrace.WithPrettyPrint())
2424
bsp := sdktrace.NewSimpleSpanProcessor(exp) // You should use batch span processor in prod
2525
tp := sdktrace.NewTracerProvider(
@@ -52,11 +52,11 @@ func MakeIndexRoute(db *gosql.DB) func(w http.ResponseWriter, r *http.Request, _
5252
}
5353

5454
// middleware is used to intercept incoming HTTP calls and apply general functions upon them.
55-
func middleware(next httprouter.Handle) httprouter.Handle {
56-
return func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
55+
func middleware(next func(http.ResponseWriter, *http.Request)) func(w http.ResponseWriter, r *http.Request) {
56+
return func(w http.ResponseWriter, r *http.Request) {
5757
ctx := core.ContextInject(r.Context(), httpnet.NewHTTPRequestExtractor(r, next))
58-
log.Printf("HTTP request sent to %s from %v", r.URL.Path, next)
59-
next(w, r.WithContext(ctx), p)
58+
log.Printf("HTTP request sent to %s", r.URL.Path)
59+
next(w, r.WithContext(ctx))
6060
}
6161
}
6262

@@ -66,17 +66,16 @@ func runApp(todosController *todos.TodosController) {
6666
log.Fatal(err)
6767
}
6868

69-
router := httprouter.New()
69+
r := mux.NewRouter()
7070

7171
index := MakeIndexRoute(todosController.DB)
72-
router.GET("/", middleware(index))
72+
r.HandleFunc("/", middleware(index)).Methods("GET")
73+
r.HandleFunc("/todos", middleware(todosController.ActionList)).Methods("GET")
74+
r.HandleFunc("/todos", middleware(todosController.ActionInsert)).Methods("POST")
75+
r.HandleFunc("/todos/{id}", middleware(todosController.ActionUpdate)).Methods("PUT")
76+
r.HandleFunc("/todos/{id}", middleware(todosController.ActionDelete)).Methods("DELETE")
7377

74-
router.GET("/todos", middleware(todosController.ActionList))
75-
router.POST("/todos", middleware(todosController.ActionInsert))
76-
router.PUT("/todos/:id", middleware(todosController.ActionUpdate))
77-
router.DELETE("/todos/:id", middleware(todosController.ActionDelete))
78-
79-
http.ListenAndServe(":8081", router)
78+
http.ListenAndServe(":8081", r)
8079
}
8180

8281
// host = “host.docker.internal”

go/samples/http/todos/controller.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"net/http"
99

1010
gosql "github.com/google/sqlcommenter/go/database/sql"
11-
"github.com/julienschmidt/httprouter"
11+
"github.com/gorilla/mux"
1212
)
1313

1414
type Todo struct {
@@ -31,7 +31,7 @@ func (c *TodosController) CreateTodosTableIfNotExists() error {
3131
return err
3232
}
3333

34-
func (c *TodosController) ActionList(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
34+
func (c *TodosController) ActionList(w http.ResponseWriter, r *http.Request) {
3535
ctx := r.Context()
3636

3737
query := r.URL.Query()
@@ -62,7 +62,7 @@ func (c *TodosController) ActionList(w http.ResponseWriter, r *http.Request, p h
6262
writeJsonResponse(w, res)
6363
}
6464

65-
func (c *TodosController) ActionInsert(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
65+
func (c *TodosController) ActionInsert(w http.ResponseWriter, r *http.Request) {
6666
ctx := r.Context()
6767

6868
var dto TodoDTO
@@ -149,9 +149,10 @@ func (c *TodosController) insertTodoMySQL(ctx context.Context, w http.ResponseWr
149149
}
150150
}
151151

152-
func (c *TodosController) ActionUpdate(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
152+
func (c *TodosController) ActionUpdate(w http.ResponseWriter, r *http.Request) {
153153
ctx := r.Context()
154-
id := p.ByName("id")
154+
vars := mux.Vars(r)
155+
id := vars["id"]
155156

156157
var dto TodoDTO
157158
err := json.NewDecoder(r.Body).Decode(&dto)
@@ -194,9 +195,10 @@ func (c *TodosController) ActionUpdate(w http.ResponseWriter, r *http.Request, p
194195
writeJsonResponse(w, res)
195196
}
196197

197-
func (c *TodosController) ActionDelete(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
198+
func (c *TodosController) ActionDelete(w http.ResponseWriter, r *http.Request) {
198199
ctx := r.Context()
199-
id := p.ByName("id")
200+
vars := mux.Vars(r)
201+
id := vars["id"]
200202

201203
var todo Todo
202204
rows, err := c.DB.QueryContext(ctx, c.SQL.TodoById(), id)

0 commit comments

Comments
 (0)