1
resposta

[Sugestão] Upload da imagem com api

Olá, percebi que estava copiando codigo repetido para fazer upload, me lembro que em alguma aula foi comentado que não seria prudente sair dando ctrl+c>ctrl+v nos metodos, como anteriormente no curso de laravel o Vinicius usou repositorios, pensei em criar um para o tratamento de uploads e criei a função de guardar a imagem:

namespace App\Repositories\Uploads;

use Illuminate\Http\Request;

class ImagesRepository
{
    public function uploadPublicImage(Request $request)
    {
        $coverPath = $request->hasFile('cover')
            ? $request->file('cover')->store('series_cover', 'public')
            : null;

        return $coverPath;

    }
}

Ai no controller da api fiz apenas a chamada da função uploadPublicImage que já retorna o caminho da imagem.

public function uploadImage(Request $request)
    {
        $coverPath = new ImagesRepository();

        $filePath = $coverPath->uploadPublicImage($request);

        return response()->json(['file_path' => $filePath]);
    }

E claro, adicionando o uploadImage nas rotas da API.

Route::post('/series/uploadImage', [\App\Http\Controllers\Api\SerieApiControler::class, 'uploadImage']);

Bem, funcionar funcionou, usando POST e no body utilizando form-data passando a key 'cover' com file em: http://localhost:8000/api/series/uploadImage

Mas gostaria de saber se eu implementei corretamente o conceito de repositorios, se não cometi algum engano, bem, aceito sugestões. :)

1 resposta

Olá Guilherme, tudo bem com você?

A implementação de um repositório para tratar o upload de imagens é uma excelente ideia e está alinhada com os princípios de responsabilidade única e reutilização de código. Seu repositório ImagesRepository está bem estruturado. Ele encapsula a lógica de upload da imagem, o que facilita a manutenção e a reutilização do código. O Controller e a rota também estão certos.

Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!