Ao realizar o POST via Postman, a aplicação retorna 400 Bad Request.
Ao realizar o POST via Postman, a aplicação retorna 400 Bad Request.
Oi Rodrigo,
Verifica o json que você está enviando no corpo da requisição se está correto e também o cabeçalho content-type
.
{
"titulo": "Dúvida Postman",
"mensagem": "Texto da Mensagem",
"nomeCurso": "Spring Boot"
}
Content-Type - application/json
Opa Rodrigo, belezaa?
Poderia postar o fonte do seu projeto (service e controller)? Vc está usando Bean-Validation?
No aguardo
package br.com.alura.forum.controller;
import java.net.URI;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.util.UriBuilder;
import org.springframework.web.util.UriComponentsBuilder;
import br.com.alura.forum.controller.dto.TopicoDto;
import br.com.alura.forum.controller.form.TopicoForm;
import br.com.alura.forum.modelo.Topico;
import br.com.alura.forum.repository.CursoRepository;
import br.com.alura.forum.repository.TopicoRepository;
@RestController
@RequestMapping("/topicos")
public class TopicosController {
@Autowired
private TopicoRepository topicoRepository;
@Autowired
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));
}
}
Não tem camada de serviço ainda.
Rodrigo,
Posta a exception completa aqui.
<!doctype html><html lang="en"><head><title>HTTP Status 400 – Bad Request</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size: 22px;
} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size: 16px;
} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size: 14px;
} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;
} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;
} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size: 12px;
} a {color:black;
} a.name {color:black;
} .line {height: 1px;background-color:#525D76;border:none;
}</style></head><body><h1>HTTP Status 400 – Bad Request</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).</p><hr class="line" /><h3>Apache Tomcat/9.0.17</h3></body></html>
No console do Eclipse imprimiu a stack trace da exception? posta aqui tambem.
Não imprimiu exceção nenhuma no console do Eclipse!
Estranho então, porque o código do seu controller está ok.
Posta aqui o código da sa classe TopicoForm
e verifica no Postman se está tudo certinho.
Aba Headers
com cabeçalho Content-Type
marcado:
Aba Body
com opção raw
marcada e json da requisição:
package br.com.alura.forum.controller.form;
import br.com.alura.forum.modelo.Curso;
import br.com.alura.forum.modelo.Topico;
import br.com.alura.forum.repository.CursoRepository;
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);
}
Opa Rodrigo, tudo bem?
Concordo com o professor, que loucura!!!
Poderia enviar o link do seu código do Github?
Se não estiver no Github pode enviar para este email thiagopaschoal076@gmail.com
Que estranho!
Rodei aqui e funcionou sem problema nenhum. Tente rodar mais uma vez pf e vamos ver se o problema persiste.
Um ponto, poderia mostrar como está a configuração do seu Postman tbm?
No aguardo
Eu não consigo colar print aqui
Aconteceu a mesma coisa cmg! Poderiam postar como resolveram?
Console eclipse: at [Source: (PushbackInputStream); line: 6, column: 2]] 2021-05-27 21:12:06.130 WARN 29841 --- [nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('}' (code 125)): was expecting double-quote to start field name at [Source: (PushbackInputStream); line: 6, column: 2]] 2021-05-27 21:13:54.275 WARN 29841 --- [nio-8080-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('}' (code 125)): was expecting double-quote to start field name at [Source: (PushbackInputStream); line: 6, column: 2]] 2021-05-27 21:17:17.574 WARN 29841 --- [nio-8080-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('}' (code 125)): was expecting double-quote to start field name at [Source: (PushbackInputStream); line: 5, column: 2]]
Olá Watson, tudo bem com vc?
Então brow, a solução que chegamos foi executar a requisição em outra ferramenta (Insomnia) sem ser o Postman. Era algum problema no Postman que ainda não identificamos o que era. Mas vamos analisar o seu problema!
Analisando o log, parece ter um erro de sintaxe no seu JSON. Isso é uma requisição POST
, GET
? Poderia postar o seu código onde vc monta o JSON?
[org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name;
No aguardo