I have made a api that should get a user by their email but I get an error. I have similar api that just works, I think it goes wrong when I send it to the controller.
The error:
JavaScript
x
Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'email' for method parameter type String is not present]
My vue code:
JavaScript
<div class="settingBlock">
Invite player by email <br>
<input v-model="invitedPlayer" id="invitedPlayer" type="text" class="field" required placeholder="Email" />
</div>
data() {
return {
invitedPlayer: ""
}
},
computed: {
email() {
return this.invitedPlayer;
}
},
const authService = new AuthService();
authService.getUserByEmail(this.email)
Authservice
JavaScript
getUserByEmail(email) {
return api.get("/auth/get", {
email
})
}
Controller
JavaScript
@GetMapping("/get")
public ResponseEntity<Optional<User>> getUserByEmail(@RequestParam String email) {
Optional<User> user = userRepository.findByEmail(email);
if (user == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(user, HttpStatus.OK);
}
UserRepository
JavaScript
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
Optional<User> findByEmail(String email);
Advertisement
Answer
Not sure what api
is here in the Vue context but I would guess that you need to change the Authservice to
JavaScript
getUserByEmail(email) {
return api.get("/auth/get?email=" + email)
}