Primeiras aulas do curso Lumen: API Rest com o Micro-framework do Laravel

Lumen: API Rest com o Micro-framework do Laravel

O primeiro Endpoint - Introdução

Olá, pessoal, sejam muito bem-vindos à Alura.

Meu nome é Vinícius dias, e sou um grande fã de seriados, como já falei pra você. Eu sou um fã tão grande de séries, assisto tantas séries, que a gente construiu junto uma aplicação pra controle de quais episódios eu já assisti, de cada série, de quais temporadas, aqui no nosso treinamento de Laravel. Mostrando esse site pra alguns amigos meus, essa aplicaçãozinha que só eu estava usando, meus amigos acharam muito legal, e falaram "Cara, desenvolve um aplicativo pra isso, pra gente também poder usar". Falei "Poxa, legal, vou desenvolver", só que aí eu pensei, Poxa, um aplicativo vai se conectar diretamente ao mesmo banco de dados que estou usando aqui, eu vou precisar colocar esse banco de dados na internet, e os aplicativos vão se conectar diretamente, porque eu vou precisar desenvolver pra Android, pra iOS, quem sabe um dia até pra Desktop, e se da mesma forma que aconteceu durante o treinamento, os dados mudarem, se eu precisar adicionar um campo, remover um campo, em todas as aplicações eu vou precisar mudar o acesso ao banco?

Isso não parece muito inteligente. Acho melhor a gente desenvolver uma API. O que é uma API?

Centralizar o acesso aos dados em um servidor, e todos os outros clientes vão fazer uma requisição pra esse servidor que me responde com os dados das séries, com os dados dos episódios de cada série, etc.

É isso que a gente vai desenvolver nesse curso, uma API, com isso a gente vai ter acesso a busca por séries, só que a gente precisa se autorizar, se autenticar antes, com isso a gente vai entender um pouco melhor sobre autorização por token, como funciona, por que se autorizar pro tokens e não como a gente já tem feito. Com autorização por token, a gente vai conseguir acessar nossos dados com paginação, os dados divididos em página, trazendo informações de navegação entre as páginas e recursos da nossa aplicação, vamos entender o que são os recursos, além de seriados, vamos cadastrar nosso episódios com suas temporadas, se eles foram assistidos ou não, vamos poder, além de criar, claro, buscar as series, uma série especifica com suas informações, sempre lembrando da questão da autorização, então bastante coisa vai ser trabalhado nesse treinamento, a gente vai ter muito conteúdo novo pra aprender sobre Laravel, sobre Lumen, por que utilizar Lumen, enfim, espero que você aproveite bastante esse treinamento, espero que você goste, se surgir alguma dúvida, não se esqueça do nosso fórum e te vejo no próximo vídeo.

O primeiro Endpoint - Endpoint com Laravel

E aí pessoal, tudo bem? Então, com essa demanda de desenvolver aplicativos com essa funcionalidade de controlar as séries, as temporadas de cada série, os episódios, a gente começa a pensar em algumas decisões, como por exemplo, vamos precisar desenvolver um aplicativo que funcione tanto em Android quanto iOS, e futuramente a gente até desenvolva aplicativos de desktop pra isso, enfim. Pensando nisso, imagina se no meu aplicativo Android eu venho aqui, me conecto a esse banco de dados, vamos supor que tenhamos disponibilizado esse banco de dados online, me conecto a esse banco de dados e faço toda essa lógica de criação, alteração de série, etc., e vou no meu aplicativo iOS, e replico toda essa lógica, me conecto no banco de dados diretamente, realizo todas essas manipulações, e da mesma forma como fizemos adicionando temporada, quando a gente precisou adicionar um campo em episódios, imagina que isso aconteça, eu vou precisar alterar todos os meu clientes, todos os aplicativos, todos os lugares, para que eles passem a utilizar esse novo modelo. Isso não parece muito inteligente, tanto código duplicado, tanta dor de cabeça pra uma coisa simples.

Então, acho que seria legal a gente centralizar essa informação em um só lugar, onde eu acesse esse ponto centralizado de informações e lá eu tenha acesso a todas as séries em algum formato que eu consiga ler, tanto na minha aplicação em Laravel, quanto no meu aplicativo Android, quanto no meu aplicativo iOS, e a partir desse ponto central, eu consiga, além de ler, inserir, atualizar, remover, fazer as operações que temos implementadas.

Se a gente vai fazer isso, não vou devolver esses dados em formato de HTML. É difícil ler, parsear esse tipo de dado, talvez seja interessante um formato um pouco mais comum, como talvez Json, a gente pode até trocar uma ideia um pouco melhor sobre qual formato a utilizar, se vai ser o Json ou não, mas por enquanto vamos pensar no Json.

Como posso passar a fornecer pro meu cliente, no caso o navegador, ou pra um aplicativo que vai fazer a requisição pro servidor, como posso fornecer os dados em formato Json, o que preciso fazer pra isso? Pensando no Laravel, como já tem aplicação desenvolvida com Laravel, vou criar uma rota, a partir da rota eu posso criar um Controller e nesse Controller, devolver uma resposta em Json.

Vamos lá. Vou criar na rota, ::get, buscar series em Json, e ao invés de criar um controller, vou criar uma funçãozinha só pra vocês verem uma coisa legal, quando eu retorno uma coleção como por exemplo, Série::all, quando eu retorno uma coleção do eloquent, como já trabalhamos nos cursos de Laravel, O Laravel automaticamente tenta representar isso como string, e essa string, uma coleção do Laravel representada como String já vem em Json pra gente. Então, se eu acessar essa URL aqui, buscar séries em Json, vou ter como resultado um Json, com todas as nossas series, pronto pra gente de bandeja.

Só que não parece muito legal algumas coisas. Primeiro, exibir esse tipo de informação é entregar informações, puramente informações, dados puros sem visualização, é uma forma de expor nossa aplicação, nossos dados pras outras pessoas, e expor os dados pra outras aplicações é o que é chamado de API, application programming interface, ou seja, a interface da programação de uma aplicação, ou seja, estou expondo a interface da minha aplicação, por exemplo, as séries, pra que outras aplicações usam. Se estou falando de API, o Laravel entrega pra gente um arquivo chamado API, talvez traga facilidades pra gente.

Deixa eu fazer isso, clicar em API e vamos lá. Aqui aparentemente tenho acesso ao mesmo estilo de roteamento, classe de rota, método get, vamos lá.

[4:23]Vou, partir da minha API, pegar as minhas series, só isso. Mas Vinícius, você já tem essa rota /series no seu arquivo web.

Vamos com calma. Vou replicar a função que desenvolvemos junto e retornar todas as series, só isso por enquanto. Esse arquivo, API.php do Laravel, sempre que eu definir uma rota aqui dentro, essa rota vai ter, antes dela, /api, automaticamente, sem que eu precise definir aqui.

Isso é chamado de grupo de rotas no Laravel. Então, quando eu acessar agora, /API/series, eu tenho o mesmo resultado, só que isso fica um pouco mais claro, aqui estou dizendo que estou acessando as series na minha aplicação pronta com visualização bonitinha, aqui dentro da minha API eu estou acessando as series, isso fica um pouco mais claro.

Beleza, vamos desenvolver o resto todo, inserção de séries, atualização, remover. Mas pensa comigo, pra eu entregar uma API, o que o Laravel fornece pra gente? O Laravel fornece o Blade com todas as facilidades de visualização, o Laravel fornece autenticação com sessão, o Laravel traz muita coisa pra gente que talvez não faça sentido na criação de uma API, são muitas funcionalidades que a gente não vai usar na hora de criar uma API, na hora que quero retornar dados puros assim. Seria interessante se tivesse uma versão mais leve do Laravel, um Laravel mais enxuto pra que a gente entregue a API mas com as mesmas facilidades que o Laravel trouxe pra gente, mas mais enxuto, mais leve, ganhando performance.

Existe um Laravel mais leve, mais enxuto, chamado de Lumen.

O Lumen.laravel.com, a gente acessa a página desse microframework como é chamado, o que isso quer dizer? Um framework que só vem com o necessário pra você desenvolver uma API, exatamente, pra entregar dados, nada além disso.

Se você quiser alguma coisa a mais, como manipular html, fazer log, trabalhar concessão, você precisa ir adicionando esses componentes.

Por padrão, só vem com o necessário, e se você der uma olhada aqui, ele é bem parecido com o que a gente trabalha com o Laravel. Exatamente os conceitos que a gente aprendeu com o Laravel, a gente vai conseguir utilizar com o Lumen, porque é como se fosse um mini Laravel.

Beleza, falei bastante, entendemos a necessidade e alguns problemas que o Laravel traz a atender essa necessidade, então o que precisamos pra trabalhar com o Lumen?

Vamos conversar um pouco melhor sobre isso, beleza?

O primeiro Endpoint - Preparando o ambiente

Olá, pessoal, bem-vindos de volta. Então, nesse vídeo a gente vai preparar o nosso ambiente para começar a trabalhar com o Lumen.

Se você já veio dos dois últimos treinamentos de Laravel, já tem seu ambiente configurado, pode pular esse vídeo que nos exercícios a gente vai ter o comandinho para criar o projeto, mas caso você esteja começando aqui ou está numa máquina diferente, já tem bastante tempo que não configura o ambiente, vamos dar uma olhada no que a gente precisa.

Primeira coisa obviamente é o PHP, certo?

No Linux e no Mac, um comandinho e você já instala o PHP sem maiores dores de cabeça.

Já no Windows, a gente vai acessar a página oficial do PHP e aqui a gente vai selecionar a versão mais recente: no caso, hoje é o 7.3.4 e vai baixar aqui em Windows Download.

Vou clicar aqui e selecionar a pasta Zip - essa opção Zip, a primeira opção.

Esse arquivo Zip a gente vai extrair para a pasta que você desejar.

Depois de extrair, você não precisa ficar desesperado com esse monte de arquivos, o que você vai fazer é: abrir o Menu Iniciar e pesquisar sobre variáveis e já vai aparecer aqui Editar variáveis de ambiente do sistema.

Vai clicar nessa opção; clicar em variáveis de ambiente e aqui vai ter a opção Path.

Você vai clicar nela; editar.

Aqui dentro, você vai clicar em Novo e adicionar o caminho para esta pasta que você acabou de extrair, só isso.

No meu caso, eu já tenho; eu já tinha o PHP instalado do treinamento de Laravel, repare que está até em uma versão um pouquinho mais antiga, que não é problema nenhum, e então eu já tenho tudo configurado.

Posso sair daqui.

Depois de fazer isso, você vai abrir o CMD, um Prompt de Comando, um PowerShell, digitar PHP-V, e vai aparecer a versão do PHP que você acabou de configurar, beleza?

Próxima etapa é pegar o Composer: "Vinícius, o que é composer? Nunca ouvi falar ou não lembro..."

Composer é um gerenciador de dependências.

Ele é muito poderoso; traz algumas funcionalidades a mais, mas basicamente - bem basicamente - o que ele faz é: ver o que nosso projeto precisa de componentes externos, ir na internet, no repositório desses componentes e trazer para o nosso projeto. Beleza?

Então a gente vai clicar aqui em Download.

No Mac e no Linux, só copiar esses comandos e rodar; e já está tudo pronto.

No Windows, você vai clicar aqui e vai baixar esse instalador, e aí next... e install.

Terminando, você vai poder abrir o seu Prompt de Comando, PowerShell, terminal e executar composer, menos menos version e vai ter lá a versão do seu composer instalado. Beleza.

Tendo isso tudo feito, você vai navegar até a pasta que você quiser para iniciar o projeto.

Eu vou iniciar em uma pastinha que já tem o meu nome, e aqui na documentação do Lumen, ele fornece para a gente algumas formas de instalar o Lumen.

Primeiro ele diz que você precisa ter o PHP, o PDO, esse tipo de coisa e já está tudo configurado aqui, e isso já vem por padrão com o PHP.

Você pode ou baixar o instalador do Lumen, da mesma forma como o Laravel te forneceu essa opção, ou você pode simplesmente criar um projeto aqui com o Lumen, e é essa opção que a gente vai realizar agora, que a gente vai seguir.

Então eu copiei aquele comando... opa, agora sim eu copiei, colei aqui e então eu digo: "composer, crie um projeto sem utilizar versões beta das dependências do Lumen, partindo do projeto do Laravel - Lumen", certo?

Eu vou chamar esse projeto de API-Series.

Você pode chamar de qualquer outra coisa que você quiser, mas como é uma API que vai permitir que a gente manipule séries, esse vai ser o nome que eu vou dar.

Quando eu der enter, o composer vai no repositório de todos os projetos que o Lumen depende, vai baixar e colocar na nossa aplicação, um por um.

Então eu vou pausar o vídeo por aqui e vou voltar quando eu já tiver tudo instalado, beleza?

Então, galera, terminou de instalar, beleza?

Só que agora pense comigo: como que eu vou ficar testando minha API?

Imagina ter que acessar e ficar visualizando os dados assim, tudo em texto, sem nenhuma corzinha para ajudar a gente ver se está tudo certo.

E pior, quando tiver que enviar dados para essa API, como eu envio dados para o navegador?

Não vai ser fácil testar dessa forma.

Então para isso, a gente vai utilizar uma ferramenta chamada Postman.

Então é só acessar getpostman.com, clicar aqui em produto - downloads, e aqui ele já vai direcionar para a tela da sua plataforma.

No caso do Windows, só clicar em download, selecionar a versão da sua plataforma - eu já tenho instalado aqui - e a partir do Postman que a gente vai realizar nossos testes, beleza?

Com isso, já com tudo instalado, o projeto do Lumen criado, eu vou utilizar o PHPStorm como IDE - você pode utilizar qualquer outra - e a gente vai abrir o projeto que acabou de criar.

Então eu vou vir aqui no Lumen - API-series.

Beleza. Então a gente já tem o ambiente configurado com PHP instalado, o nosso Postman instalado, composer instalado, projeto do Lumen criado... vamos pensar então: qual banco de dados a gente vai utilizar?

Da mesma forma que a gente fez com o Laravel, a gente vai continuar utilizando o SQLite nesse projeto, beleza?

Então você não precisa se preocupar em instalar nenhum servidor de banco de dados, mas caso nos treinamentos de Laravel você tenha utilizado algum sistema de banco de dados diferente como por exemplo o MySQL, Oracle, Postgre, sem problema, você pode seguir com essa configuração, não tem problema nenhum, nada vai mudar.

A gente, para não precisar de uma infraestrutura maior, vai utilizar o SQLite.

Então a gente já tem tudo aqui configurado.

Mas como que o PHP vai se conectar com o SQLite?

O PHP precisa saber, precisa fornecer esse suporte.

Então lá na pasta que a gente descompactou do PHP, existe o arquivo PHP.ini-development, você vai copiar ele e colar como PHP.ini.

Esse arquivo você vai abrir com qualquer editor de texto e aqui dentro você vai buscar pdo_sqlite.

Deu enter, você vai encontrar essa linha aqui.

Essa linha vai vir comentada como todas as outras, você simplesmente tira o ponto e vírgula (;) que tem aqui na frente.

Tirou e agora você já está pronto para se conectar com o banco de dados. Beleza.

Com isso, ambiente todo pronto, hora de botar a mão na massa e ver esse Lumen funcionando, não é?

Bom, no próximo vídeo a gente faz isso.

Sobre o curso Lumen: API Rest com o Micro-framework do Laravel

O curso Lumen: API Rest com o Micro-framework do Laravel possui 182 minutos de vídeos, em um total de 62 atividades. Gostou? Conheça nossos outros cursos de PHP em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda PHP acessando integralmente esse e outros cursos, comece hoje!

  • 1269 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1269 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1269 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1269 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas