Przesyłanie dodatkowych danych dla użytkownika

0

Cześć,
Mam problem piszę aplikację w Spring Boot i Angular. Mam zarejestrowanych użytkowników i do bazy danych gdzie jest tabela z użytkownikami dodałam jeszcze jedną kolumnę. Po zalogowaniu użytkownika przechodzę do strony testu, po rozwiązaniu testu chcę, aby wynik przesyłał się właśnie do tej kolumny i zapisywał się dla zalogowanego wcześniej użytkownika.

Mam napisany taki kod w Springu i nie działa, byłabym wdzięczna za pomoc

@PutMapping("/users/{points}")
        public ResponseEntity<User> przeslijWynik (@PathVariable String login, @RequestBody User user){
         User przeslijWynik = userRepository.findByLogin(login);

            przeslijWynik.setPoints(user.getPoints());

            userRepository.save(przeslijWynik);


            return ResponseEntity.ok(przeslijWynik);

        }

Dodam, że mam już gotowy kod w frotnedzie

0

W kodzie Springa, który podałaś, brakuje Ci parametru "login" w ścieżce URL. Dlatego, aby poprawić to, możesz dodać to do ścieżki URL lub użyć adnotacji @RequestParam zamiast @PathVariable.

Oto poprawiona wersja metody przeslijWynik z adnotacją @RequestParam:

@PutMapping("/users/{login}/points")
public ResponseEntity < User > przeslijWynik(@PathVariable String login, @RequestParam("points") Integer points) {
    User user = userRepository.findByLogin(login);
    user.setPoints(points);
    userRepository.save(user);
    return ResponseEntity.ok(user);
}

Wywołując tę metodę z frontendu, musisz wysłać żądanie PUT z parametrami "login"
i "points".

Przykładowe wywołanie metody z użyciem frameworka Angular:

    this.http.put('/api/users/' + login + '/points', {
        points: wynik
    })
    .subscribe(
        (response) => console.log(response),
        (error) => console.log(error)
    );

To ma do powiedzenia chatGPT

0

Zastosowałam Twoją wersję kodu w Spring Boot, chciałam zrobić to też w Angularze tylko ja mam taką funkcję w nim:

sendWynik(wynik:Wynik):Observable<Object>{
return this.http.put(${this.url},wynik);

}
Czy to jest poprawnie i mogę to zmienić zgodnie z Twoją wersją?

1 użytkowników online, w tym zalogowanych: 0, gości: 1