Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Erro ao executar metodo POST

No Postman, ao executar o método post inserindo o body e configurando o header, está retornando o erro "500 Internal Server Error"

Consegue me ajudar?

6 respostas

Oi Jacqueline,

Se deu erro 500 significa que o postman enviou a requisição normalmente, mas ocorreu algum problema no projeto ao processá-la.

Manda aqui como você enviou o json com as informações e também poste aqui o código da suas classes TopicosController e TopicoForm.

Segue:

arquivo json: { "titulo":"Dúvida Postman", "mensagem":"Texto da mensagem", "nomeCurso":"Spring Boot" }


classe TopicosController:

@RestController @RequestMapping("/topicos") public class TopicosController { @Autowired private TopicoRepository topicoRepository; private CursoRepository cursoRepository;

@GetMapping
public List<TopicoDto> lista(String nomeCurso)
{
    if(nomeCurso == null)
    {
        List<Topico> topicos = topicoRepository.findAll();
        return TopicoDto.converter(topicos); 
    }
    else
    {
        List<Topico> topicos = topicoRepository.findByCursoNome(nomeCurso);
        return TopicoDto.converter(topicos);
    }

}

@PostMapping
public ResponseEntity<TopicoDto> cadastrar(@RequestBody TopicoForm form, UriComponentsBuilder uriBuilder) 
{
    Topico topico = form.converter(cursoRepository);
    topicoRepository.save(topico);
    URI uri = uriBuilder.path("/topicos/{id}").buildAndExpand(topico.getId()).toUri();
    return ResponseEntity.created(uri).body(new TopicoDto(topico));
}

}


classe TopicoForm

public class TopicoForm { private String titulo; private String mensagem; private String nomeCurso;

public String getTitulo() {
    return titulo;
}
public void setTitulo(String titulo) {
    this.titulo = titulo;
}
public String getMensagem() {
    return mensagem;
}
public void setMensagem(String mensagem) {
    this.mensagem = mensagem;
}
public String getNomeCurso() {
    return nomeCurso;
}
public void setNomeCurso(String nomeCurso) {
    this.nomeCurso = nomeCurso;
}

public Topico converter(CursoRepository cursoRepository)
{
    Curso curso = cursoRepository.findByNome(nomeCurso);
    return new Topico(titulo, mensagem, curso);
}

}


O mais estranho é que executou certinho o método GET. Pode me ajudar, por favor?

Qual exception aparece no Eclipse quando você envia a requisição pelo Postman?

Oi, este é o erro:

2020-08-16 19:07:34.884 ERROR 13484 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException: null

solução!

Na sua classe TopicosController faltou o @Autowired em cima do atributo CursoRepository e por isso está dando NullPointerException.

Ops rsrs MUITO obrigada!!!! Agora deu certo :)