[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Tiago Santos
Criador Tiago Santos 02/10/2023

Professor, o que você acha de tratativas assim em api:

$array = ['error' => ''];

$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);
}
Manager Carlos Ferreira 02/10/2023

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']);

Carlos Ferreira
Criador Tiago Santos 02/10/2023

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? 

Tiago Santos
Manager Carlos Ferreira 02/10/2023

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.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!