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

Como ocultar campos de retorno de um objeto de negócio ?

Se eu tenho duas operações que retornam uma lista de Pessoa e uma destas operações eu precise de todos os atributos de Pessoa e na outra eu necessite somente do id e do nome, por exemplo. Como eu posso ocultar os demais atributos de Pessoa para a segunda operações?

Obs.: Sempre retorna um JSON do objetos de negócio.

http://api.app.servico.op1 // retorna uma lista de Pessoa com todos os atributos.

http://api.app.servico.op2 // retorna uma lista de Pessoa somente com id e nome.

2 respostas
solução!

Oi Rogerio tudo bem?

Quando precisamos fazer esse tipo de retorno, geralmente a gente utiliza um padrão chamado DTO, ou seja criamos uma classe que contem os atributos que precisamos retornar

No seu caso, seria algo como:

public class PessoaDto {

private Long id;
private String nome:

public PessoaDto(Pessoa pessoa) {
    this.id = pessoa.getId();
    this.nome = pessoa.getNome();
}
//Getters and Setters
}

Agora no seu controller, você retorna o Dto.

Ah, lembrando que tem outras estratégias, como no Gson por exemplo, onde podemos escolher quais campos queremos serializar, mas na opnião é sempre bom ter DTOs

Espero ter ajudado.

Obrigado!