Enviando dados para a API

Untitled

Os dados são enviados para API através de uma requisição HTTP. Então é preciso definir o método e a URL da API, além dos dados que serão enviados. Neste caso, os dados estão sendo enviados no corpo da requisição no formato JSON( (JavaScript Object Notation).

Trello: https://trello.com/b/O0lGCsKb/api-voll-med

Figma, Layout da aplicação: https://www.figma.com/file/N4CgpJqsg7gjbKuDmra3EV/Voll.med

Recebendo dados na API

Para receber os dados da requisição, primeiro é necessário mapear o controller.

@RestController
@RequestMapping("/medicos")
public class MedicoController {

    @PostMapping
    public void cadastrar(@RequestBody String json){
        System.out.println(json);
    }

}

Desse modo, o JSON do corpo da requisição é obtido. Entretanto, os campos do JSON não são recebidos separadamente. Para isso, é preciso criar uma classe que irá receber cada campo do JSON.

DTO com Java Record

Para receber os dados da requisição, será utilizada uma classe DTO, neste caso, um Record.

DTO (Data Transfer Object) é um padrão utilizado para receber e enviar dados. Esse padrão sera utilizado em todas as entradas e saídas de dados da aplicação.

Record é uma representação de um classe imutável, que tem apenas atributos, construtores e métodos de leitura.

Classe DTO, sem utilização de Record:

public final class Telefone {

    private final String ddd;
    private final String numero;

    public Telefone(String ddd, String numero) {
        this.ddd = ddd;
        this.numero = numero;
    }

    @Override
    public int hashCode() {
        return Objects.hash(ddd, numero);
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        } else if (!(obj instanceof Telefone)) {
            return false;
        } else {
            Telefone other = (Telefone) obj;
            return Objects.equals(ddd, other.ddd)
              && Objects.equals(numero, other.numero);
        }
    }

    public String getDdd() {
        return this.ddd;
    }

    public String getNumero() {
        return this.numero;
    }
}

Classe DTO com utilização do Record:

public record Telefone(String ddd, String numero){}