É boa prática expor como parâmetro a entidade no REST

Pessoal,

Criei um endpoint rest como esse abaixo:

@PostMapping(value = "/novoFilme", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> novoFilme(@RequestBody Filme filme) {
    log.info("novoFilme");
    try {
        filmesService.inserirFilme(filme);
        return new ResponseEntity<String>(HttpStatus.OK);
    } catch (FilmeValidationException e) {
        return new ResponseEntity<String>(e.getMessage(),HttpStatus.BAD_REQUEST);
    }
}

A classe Filme no parâmetro é a própria entidade filme. Minha dúvida é: seria boa prática? ou o ideal é criar algo como o FilmeForm???

Acho que não. Pois vc cria uma acoplamento com sua camada de controle e domínio. O ideal é sempre usar uma classe que receba os valores e depois transformar na entidade para diminuir o acoplamento entre as camadas. O mesmo vale para retornar dados também.

1 curtida

Em projetos de estudo não vejo problema, mas em algo mais profissional eu não utilizaria dessa forma, prefiro criar DTO’s para entrada e saída de dados.

1 curtida

Trabalhe só com DTO. Classe de Entidade é coisa de faculdade.