Boa prática

Professor, o que você acha de tratativas assim em api:
$course = Course::where('id', $id)->first();
if (!empty($course)) {
return response()->json($course);
} else {
$array['error'] = 'Não foi possível retornar o curso';
return response()->json($array);
}
Eu faria assim:
public function show(string $id)
{
$course = Course::where('id', $id)->findOrFail();
return response()->json($course);
}
De qualquer forma, evite esse else, como tem um return, nem precisa dele:
if (!$course = Course::where('id', $id)->first()) {
return response()->json($course);
}
return response()->json(['error' => 'Não foi possível retornar o curso']);

Professor, bom dia!
O que não está entrando ainda na minha cabeça é o que retorna se caso der erro? Porque eu estou entendendo que vamos retornar apenas o json de sucesso, por isso coloquei esse "else", só que a sua solução foi como se não existisse outra possibilidade além do sucesso.
Não temos retornar algo como return response()->json('algo', 400 ou 500) ? Tipo, para que o usuário que está consumindo a API saber o que de fato foi de errado? Porque tendo a mensagem de erro podemos resgatar a mesma no Vue / JQuery / Js e afins, claro que o consumirdor da API pode personalizar o erro etc... Mais qual é o caminho ideial ? Estou pensando errado professor?

Se entrar no if, o return não deixa continuar:
if ($course = Course::where('id', $id)->first()) {
return response()->json($course);
}
return response()->json(['error' => 'Não foi possível retornar o curso'], 404);
--
Sobre erro 500, é erro interno da aplicação, na realidade nem tem como tratar, a não ser um try/catch que nesse caso nem faria sentido.

Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!