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

Implementação de SeasonsController e EpisodesController para a rota de API

Olá.

Utilizando os conhecimentos adquiridos desde o começo do projeto de Series, fiz a implementação dos controllers de Seasons e de Episodes para a API e gostaria de um feedback.

Dentro de App\Http\Controllers\Api, criei os arquivos SeasonsController.php e EpisodesController.php:

SeasonsController:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Series;

class SeasonsController extends Controller
{
    public function show(int $series)
    {
        $seasonsModel = Series::find($series);
        if ($seasonsModel === null) {
            return response()->json(['message' => 'Série não encontrada'], 404);
        }

        return $seasonsModel->seasons()->get();
    }
}

EpisodesController:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Series;

class EpisodesController extends Controller
{
    public function show(int $series)
    {
        $episodesModel = Series::find($series);
        if ($episodesModel === null) {
            return response()->json(['message' => 'Série não encontrada'], 404);
        }

        return $episodesModel->episodes()->get();
    }
}

E implementei as rotas:

Route::get('/series/{series}/seasons', [SeasonsController::class, 'show']);
Route::get('/series/{series}/episodes', [EpisodesController::class, 'show']);

Gostaria de saber se foi uma implementação correta, se está dentro das boas práticas e se há alguma melhoria que pode ser feita no código.

Desde já agradeço.

3 respostas
solução!

Boa, Giulivan! Já escreveu os testes para esses endpoints?

Um único detalhezinho que eu mudaria é nos parâmetros. Ao invés de receber int, eu receberia Series de uma vez. E nomearia $series mesmo. Chamar de $seasonsModel ou $episodesModel me leva a crer que seriam objetos do tipo Season e Episode, respectivamente.

Valeu, Vinicius!

Fiz as alterações que sugeriu e continuou super certo.

Na parte dos testes vou deixar pra aprofundar mais para a frente, com os cursos voltados a testes do PHP para depois aplicar dentro do Laravel.

Muito obrigado pelo feedback.

Boa, Giulivan. Bons estudos! Não se esquece de marcar o tópico como solucionado. :-D