@RequestParam Required String parameter 'nome' is not present

1 resposta Resolvido
java
C

O erro MissingServletRequestParameterException: Required String parameter 'nome' is not present indica que o parâmetro esperado “nome” não está sendo fornecido na requisição HTTP, entretanto como pode ser visualizado no print o parâmetro é passado.
E estou seguindo o livro da casa do código Back-end java .

os métodos:

na class UserService

public List queryByName(String name) {

List usuarios = userRepository.queryByNomeLike(name);

return usuarios

.stream()

.map(DTOConverter::convert)

.collect(Collectors.toList());

}

na class UserController

@GetMapping(/user/search)

public List queryByName(

@RequestParam(name=nome, required = true)

String nome) {

return userService.queryByName(nome);

}

na class UserRepository

public interface UserRepository extends JpaRepository<User, Long> {	

User findByCpf(String cpf);	

List queryByNomeLike(String name);

}

url para acessar o endpoint
http://localhost:8080/user/search?nome=mar%

saída na console

não consigo compreender porque persisti o erro 400, me notificando que o parêmetro nome não esta presente . agradeço desde já a comunidade.

1 Resposta

W
Solucao aceita

Este erro acontece porque o sinal % tem significado especial em uma URL.

Este sinal é usado para codificar outros valores e do jeito que vc usou, com ele sozinho, ficou mal formado.

Se vc quer que o valor mar% chegue na sua aplicação, sua URL deveria ser assim:

http://localhost:8080/user/search?nome=mar%25

Pois o código %25 representa um % literal.

Criado 28 de janeiro de 2024
Ultima resposta 28 de jan. de 2024
Respostas 1
Participantes 2