1
resposta

Método POST com Feign Cliente

Olá, estou tentando incluir uma busca na minha api com Feign Client onde dado um numero de um cep o mesmo irá cadastrar automaticamente o nome da cidade e o estado, porém estou com certa dificuldade para entender como eu posso fazer isso usando o método POST, alguém poderia me ajudar dando um exemplo de como eu posso fazer isso no controller? Obrigada!

package br.com.api.rest.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.Data;

@Entity
@Data
@Table(name = "cliente")
public class Cliente {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;


    @NotEmpty
    @Column(name = "nome_completo", nullable = false)
    private String nomeCompleto;


    @NotNull
    @Enumerated(EnumType.STRING)
    @Column(name = "sexo", nullable = false, length = 1)
    private Sexo sexo;


    @NotNull
    @Temporal(TemporalType.DATE)
    @JsonFormat(pattern="yyyy-MM-dd")
    @Column(name = "data_nascimento", nullable = false)
    private Date dataNascimento;


    @NotNull
    @Column(name = "idade", nullable = false)
    private int idade;


    @NotNull
    @Valid
    @ManyToOne
    @JoinColumn(name = "cidade_id")
    private Cidade cidade;

    @NotEmpty
    @Column(name = "cep", nullable = false)
    private String cep;

}
@FeignClient(url = "viacep.com.br/ws/", name = "cepService")
public interface ViaCEPService {

    @RequestMapping(method = RequestMethod.POST, value = "/cadastrar", consumes = "application/json")
    public void buscacep(@PathVariable("cep") String cep);

}
@RestController
@RequestMapping("/cliente")
public class ClienteController {

@Autowired
    private ClienteService clienteService;

@PostMapping
    public ResponseEntity<Cliente> cadastrarCliente(@RequestBody @Valid Cliente cliente) {
        clienteService.cadastrarCliente(cliente);
        return ResponseEntity.status(HttpStatus.CREATED).build();
    }
}
@Service
public class ClienteService {
public Cliente cadastrarCliente(Cliente cliente) {
        return clienteRepository.save(cliente);
    }
}
@Entity
@Data
@Table(name = "cidade")
@NoArgsConstructor
public class Cidade {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;


    @NotNull @NotEmpty
    @Column(name = "nome_cidade", nullable = false)
    private String nome;


    @NotNull @NotNull
    @Column(name = "estado", nullable = false, length = 2)
    private String estado;


}
1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!