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

403 Forbidden

Quando tento executar da o erro 403 forbidden, mesmo usando o token corretamente (funcionando nas outras requisições)

No Log de execução da a seguinte mensagem:

WARN 216977 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation]

8 respostas

Oi!

Manda um print da sua requisição no Insomnia. Manda também da aba Header

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Tudo certo nessa parte. Manda então o código do seu controller e os records que ele utiliza.

Beleza

ConsultaController

package med.voll.api.controller;

import jakarta.validation.Valid;
import med.voll.api.domain.consulta.DadosAgendamentoConsulta;
import med.voll.api.domain.consulta.DadosDetalhamentoConsulta;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("consultas")
public class ConsultaController {

    @PostMapping
    @Transactional
    public ResponseEntity agendar(@RequestBody @Valid DadosAgendamentoConsulta dados) {
        System.out.println(dados);
        return ResponseEntity.ok(new DadosDetalhamentoConsulta(null, null, null, null));
    }

}

DadosAgendamentoConsulta

package med.voll.api.domain.consulta;

import jakarta.validation.constraints.Future;
import jakarta.validation.constraints.NotNull;


import java.time.LocalDateTime;

public record DadosAgendamentoConsulta(
        Long idMedico,

        @NotNull
        Long idPaciente,

        @NotNull
        @Future
        LocalDateTime data

        ) {
}

DadosDetalhamentoConsulta

package med.voll.api.domain.consulta;

import java.time.LocalDateTime;

public class DadosDetalhamentoConsulta {
    public DadosDetalhamentoConsulta(Long id, Long idMedico, Long idPaciente, LocalDateTime data) {
    }
}

A principio tudo certo. Não consegui identificar o problema. Consegue compartilhar seu projeto para eu analisar melhor?

Pode ser pelo GitHub? acabei de commitar la: https://github.com/Lediel/Alura/tree/main/spring-boot/med-voll-api

solução!

Ah já vi o problema. Na sua classe DadosDetalhamentoConsulta, que está como classe ao invés de ser um record. Altere para:

public record DadosDetalhamentoConsulta(Long id, Long idMedico, Long idPaciente, LocalDateTime data) {}

Que vacilo kkk isso mesmo muito obrigado