W sumie teraz mam inny problem, ale może będziesz mi w stanie pomóc. Chcę przesłać dla zalogowanego użytkownika liczbę punktów jaką zdobył, ale cały czas mam taki błąd w moim Springu: "Required request parameter 'points' for method parameter type int is not present", a w konsoli mam błąd http 400.
Mój kod w Springu:
@PostMapping("/users/{login}/points") public ResponseEntity<User> przeslijWynik(@PathVariable String login, @RequestParam("points") int points) { User user = userRepository.findByLogin(login); user.setPoints(points); userRepository.save(user); return ResponseEntity.ok(user); }
I w Angularze:
przekazWynik(user:User) {
this.userID=this.loginUserService.login;
return this.http.post(`${this.url}/${this.userID}/points`, {points:user.points});
}
Co muszę zmienić w kodzie?
Masz coś takiego @RequestParam("points") int points Wymagasz tutaj parametru w request URL a u Ciebie przesyłasz raczej RequestBody, więc albo @RequestParams zamienisz na @RequestBody i dostosujesz, albo musisz zmodyfikować metode po stronie klienta Jeśli masz przekazać to tak jak u CIebie to musisz zmienić na
@RequestBody Map<String, Integer> points
string to klucz : points, natomiast wartosc to user.points, innym wypadku Druga opcja to modyfikacja rządania klienta na coś pokroju takiego :
return this.http.post(`${this.url}/${this.userID}/points?points=${user.points}`, {});
można również skorzystać z klasy HttpParams, aby przesłać parametry zapytania do serwera.
const options = { params: new HttpParams().set('points', user.points.toString()) }; return this.http.post(`${this.url}/${this.userID}/points`, {}, options);
trzeci argument metody post() to opcjonalny obiekt HttpParams
93,455 zapytań
142,449 odpowiedzi
322,718 komentarzy
62,837 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj