Skip to content

back: itemIDとUserIDを取り違えてリクエストした時500になる #6

@sana-sagegami

Description

@sana-sagegami

背景

フロントでitem_idとuser_idを取り違えた
/v1/item/20K24132にフロントがバックにリクエストを送った

期待していた動作

400 リクエスト不正に返って欲しかった

  • エラーの情報がフロントかバックか不明
  • openapi に400があるので、それを使う
    • item_idとuser_idは形式が違うので、バリデーションができる

実際の動作

500 が返ってくる

パニック時のスタックトレース
sysken-pay  | 2026/04/24 09:21:10 [4119069b9f86/KeDjRiwSan-000011] "GET http://localhost:8080/v1/user/20X24045/balance HTTP/1.1" from 192.168.117.1:42574 - 200 54B in 2.443539ms
sysken-pay  | 
sysken-pay  |  panic: runtime error: invalid memory address or nil pointer dereference
sysken-pay  |  
sysken-pay  |  -> sysken-pay-api/app/domain/object/item.(*Item).ID
sysken-pay  |  ->   /go/app/app/domain/object/item/item.go:147
sysken-pay  | 
sysken-pay  |     sysken-pay-api/app/ui/api/item.toGetItemResponse
sysken-pay  |       /go/app/app/ui/api/item/response.go:63
sysken-pay  |     sysken-pay-api/app/ui/api/item.(*itemHandlerImpl).GetItemByJanCode
sysken-pay  |       /go/app/app/ui/api/item/item.go:117
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5.(*Mux).routeHTTP
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/mux.go:477
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5.(*Mux).ServeHTTP
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/mux.go:73
sysken-pay  |     github.com/go-chi/chi/v5.(*Mux).Mount.func1
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/mux.go:321
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5.(*Mux).routeHTTP
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/mux.go:477
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     sysken-pay-api/app/server.Run.Timeout.func3.1
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/middleware/timeout.go:44
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/cors.(*Cors).Handler-fm.(*Cors).Handler.func1
sysken-pay  |       /go/pkg/mod/github.com/go-chi/cors@v1.2.2/cors.go:231
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5/middleware.Recoverer.func1
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/middleware/recoverer.go:45
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5/middleware.init.0.RequestLogger.func1.1
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/middleware/logger.go:55
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5/middleware.RealIP.func1
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/middleware/realip.go:36
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5/middleware.RequestID.func1
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/middleware/request_id.go:76
sysken-pay  |     net/http.HandlerFunc.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:2322
sysken-pay  |     github.com/go-chi/chi/v5.(*Mux).ServeHTTP
sysken-pay  |       /go/pkg/mod/github.com/go-chi/chi/v5@v5.2.3/mux.go:90
sysken-pay  |     net/http.serverHandler.ServeHTTP
sysken-pay  |       /usr/local/go/src/net/http/server.go:3340
sysken-pay  |     net/http.(*conn).serve
sysken-pay  |       /usr/local/go/src/net/http/server.go:2109
sysken-pay  |     created by net/http.(*Server).Serve in goroutine 20
sysken-pay  |       /usr/local/go/src/net/http/server.go:3493
sysken-pay  |     
sysken-pay  | 2026/04/24 09:21:27 [4119069b9f86/KeDjRiwSan-000012] "GET http://localhost:8080/v1/item/20K24132 HTTP/1.1" from 192.168.117.1:42574 - 500 0B in 28.844068ms

再現方法

  1. http://localhost:8080/v1/item/20X24045 にアクセス
  2. 500 がかえる
Image

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions