Olá, Henrique!
Sua pergunta é muito relevante, pois as boas práticas de programação são essenciais para a manutenção e compreensão do código.
O trecho de código que você compartilhou é, de fato, um bom exemplo de como lidar com a situação em que um objeto buscado não é encontrado. Você está corretamente verificando se o objeto "nota" é nulo e, se for, está retornando um status HTTP 404 (Not Found) usando o método ResponseEntity.notFound().build()
. Isso é uma boa prática, pois fornece feedback adequado ao cliente da API sobre o que aconteceu com sua solicitação.
No entanto, uma sugestão seria tratar a exceção diretamente no repositório. Em vez de retornar nulo, o método getReferenceByNumeroNFSE
poderia lançar uma exceção personalizada quando a nota fiscal não é encontrada. Então, você poderia usar um manipulador de exceções (@ExceptionHandler
) para capturar essa exceção e retornar o status 404. Isso tornaria o código do controlador mais limpo e a lógica de erro mais centralizada.
Por exemplo:
@GetMapping("/{numero}")
public ResponseEntity<DetalharNFSE> buscarNFSE(@PathVariable int numero) {
try {
var nota = repository.getReferenceByNumeroNFSE(numero);
return ResponseEntity.ok(new DetalharNFSE(nota));
} catch (NotaFiscalNaoEncontradaException ex) {
return ResponseEntity.notFound().build();
}
}
Espero ter ajudado e bons estudos!