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

[Bug] Erro

Boa noite, no Postman quando eu envio um paciente, aparece o erro abaixo: Erro: Request method 'POST' is not supported

E no IntelliJ aparece: WARN 13032 --- [nio-8080-exec-7] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' is not supported]

E eu não consigo ver a listagem de pacientes.

5 respostas

Oi!

Manda o código da sua classe PacienteController

Segue o código da classe PacienteController, que está no arquivo PacienteController.java: obs: esse arquivo está do mesmo jeito que eu baixei no início do curso.

@RestController
@RequestMapping("pacientes")
public class PacienteController {

    @Autowired
    private PacienteRepository repository;

    @Autowired
    private CadastroPacienteService service;

    @PostMapping
    @Transactional
    public ResponseEntity<DadosDetalhamentoPaciente> cadastrar(@RequestBody @Valid DadosCadastroPaciente dados, UriComponentsBuilder uriBuilder) {
        var detalhesPaciente = service.cadastrar(dados);
        var uri = uriBuilder.path("/pacientes/{id}").buildAndExpand(detalhesPaciente.id()).toUri();
        return ResponseEntity.created(uri).body(detalhesPaciente);
    }

    @GetMapping
    public ResponseEntity<Page<DadosListagemPaciente>> listar(@PageableDefault(size = 10, sort = {"nome"}) Pageable paginacao) {
        var pacientes = repository.findAll(paginacao).map(DadosListagemPaciente::new);
        return ResponseEntity.ok(pacientes);
    }

    @GetMapping("/{id}")
    public ResponseEntity<DadosDetalhamentoPaciente> detalhar(@PathVariable Long id) {
        var paciente = repository.getReferenceById(id);
        return ResponseEntity.ok(new DadosDetalhamentoPaciente(paciente));
    }

    @PutMapping
    @Transactional
    public ResponseEntity<DadosDetalhamentoPaciente> atualizar(@RequestBody @Valid DadosAtualizacaoPaciente dados) {
        var paciente = repository.getReferenceById(dados.id());
        paciente.atualizarInformacoes(dados);

        return ResponseEntity.ok(new DadosDetalhamentoPaciente(paciente));
    }

    @DeleteMapping("/{id}")
    @Transactional
    public ResponseEntity<Void> excluir(@PathVariable Long id) {
        var paciente = repository.getReferenceById(id);
        paciente.desativar();

        return ResponseEntity.noContent().build();
    }

}

Está certinho. Manda aqui um print da requisição no Postman

Acho que consegui descobrir o motivo do erro. Mas uma outra dúvida: tem como exibir mais de 10 registros de pacientes? Se não tiver, como que faz para ver a segunda página de pacientes?

solução!

Sim, é só passar os parâmetros na url

page para a página size para a quantidade de elementos

Exemplo: http://localhost:8080/pacientes?page=2&size=5