diff --git a/typing-server/api/handler/score.go b/typing-server/api/handler/score.go index b061ab3b..063d7d8d 100644 --- a/typing-server/api/handler/score.go +++ b/typing-server/api/handler/score.go @@ -46,28 +46,26 @@ func GetScoresRanking(w http.ResponseWriter, r *http.Request) { func PostScore(w http.ResponseWriter, r *http.Request) { ctx := r.Context() - userIDStr := r.URL.Query().Get("user_id") - userID, err := uuid.Parse(userIDStr) - if err != nil { - http.Error(w, "Invalid user_id", http.StatusBadRequest) - return + // リクエストボディから値を取得 + var requestBody struct { + UserID string `json:"user_id"` + Keystrokes int `json:"keystrokes"` + Accuracy float64 `json:"accuracy"` } - - keystrokesStr := r.URL.Query().Get("keystrokes") - keystrokes, err := strconv.Atoi(keystrokesStr) - if err != nil { - http.Error(w, "Invalid keystrokes", http.StatusBadRequest) + if err := json.NewDecoder(r.Body).Decode(&requestBody); err != nil { + http.Error(w, "Invalid request body", http.StatusBadRequest) return } - accuracyStr := r.URL.Query().Get("accuracy") - accuracy, err := strconv.ParseFloat(accuracyStr, 64) + // user_idをUUIDに変換 + userID, err := uuid.Parse(requestBody.UserID) if err != nil { - http.Error(w, "Invalid accuracy", http.StatusBadRequest) + http.Error(w, "Invalid user_id", http.StatusBadRequest) return } - if err := service.CreateScore(ctx, entClient, userID, keystrokes, accuracy); err != nil { + // スコアを作成 + if err := service.CreateScore(ctx, entClient, userID, requestBody.Keystrokes, requestBody.Accuracy); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }