Skip to content

Projeto criado com ênfase em API, com o objetivo de criar um CRUD e relacionar consultas com o banco havendo duas colunas: Nome e Conteúdo de uma Noticia.

Notifications You must be signed in to change notification settings

iarleyibiapina/Api_Laravel

Repository files navigation

Projeto focado em API

A ideia é criar um sistema que forneça dados de uma noticia (CRUD), ele possui autenticação JWT sendo necessária um registro de um usuario para consumir os dados de uma noticia.

Para executar:

Primeiramente faça uma cópia do projeto


git clone https://github.com/iarleyibiapina/Api_Laravel.git

Após isso entre na pasta do projeto e inicie em seu editor de cógigo, neste caso estarei me baseando no Visual Studio Code.

Para entrar na pasta


cd Api_Laravel/

Abrir o projeto no vsCode


code .


Abra o terminal e instale as dependencias do composer com:


composer install

e aguarde a instalação


Ainda no terminal:

Gere uma chave de encriptação do Laravel:

php artisan key:generate

Gere uma chave secreta para o JWT


php artisan jwt:secret


Agora dentro do projeto é preciso configurar uma conexao ao banco de dados

E para isto, faça uma cópia do arquivo .env.example retirando o sufixo .example ou abrir o terminal no vsCode com 'ctrl + j' usar este comando:


cp .env.example .env

Este comando irá criar uma copia do arquivo de configuração do projeto e você precisará definir:

Importante que você crie seu Banco de Dados MySql. Neste exemplo irei utilizar um banco de dados que havia criado chamado 'teste'.

Para trabalhar com mysql estarei utilizando um servidor local chamado XAMPP, onde o módulo MySQL configurado na porta 3306 está ativo.

  • DB_CONNECTION=mysql
  • DB_HOST=127.0.0.1
  • DB_PORT=3306
  • DB_DATABASE=teste
  • DB_USERNAME=root
  • DB_PASSWORD=

Por fim executar o comando 'migrate' para criar as novas tabelas no banco.


php artisan migrate

Para complementar o projeto, você tambem pode criar alguns dados falsos para melhor testar a API utilizando este comando:


php artisan db:seed --class=NoticiasSeeder

Este comando irá criar 20 linhas falsas na tabela noticias no banco.


php artisan db:seed --class=UserSeeder

Este comando irá criar um usuario falso na tabela users no banco.


Por fim, iniciar o servidor local para consumir a API.


php artisan serve --port=9000

A flag --port é opcional, neste caso estarei iniciando na porta 9000 pois a padrão é a porta 8000 e você pode testar utilizando com outros projetos locais.


Para testar:

Existem várias ferramentas externas para testar uma API, sendo uma delas: Curl, Swagger, PostMan, StopLight. Recomendo utilizar o PostMan, pois é uma ferramenta mais completa.

Os endpoints para fazer as requisições são:

Usuarios

  • Registrando no sistema, retornando o token JWT

Enviar como Params - key, exatamente:
name
email
password


POST 'sistema/registrar'

  • Fazer um login no sistema.

Enviar como Params - key, exatamente:
email
password


POST 'sistema/logar'

Após logar será retornado a chave JWT que será necessária para as próximas requisições.

A chave fica em: Data -> token , copie toda a chave para utilizar posteriormente.

A partir de agora as rotas estarão protegidas, isso significa que nenhum usuario não logado no sistema poderá consumir estas rotas e que para utiliza-las é preciso definir a chave recuperada no login

A chave precisa ser adicionada em:
Authorization -> token bearer
e copiada no campo ao lado

Adicionando Chave JWT


  • Retorna o usuario logado neste momento.

GET 'user/'

  • Retorna uma lista de todos os usuarios cadastrados no sistema.

GET 'sistema/usuarios'

  • Faz logout no sistema

GET 'sistema/logout'

Noticias

Ainda utilizando a chave em authorization!

  • Pegando todas as noticias

GET 'sistema/noticias'

  • Pegando uma noticia pelo ID

GET 'sistemas/noticias/1'

ATENÇÃO

Para enviar dados via metodo Post e PUT, é preciso definir em 'PARAMS' a chave do input e o valor, que serão enviados.
A chaves precisam ser exatamente:
'nome_noticia'
'conteudo_noticia'

  • Fazendo envio de dados de uma noticia

POST 'sitemas/noticias/1'

  • Atualizando dados de uma noticia

PUT 'sistemas/noticias/1'

  • Deletando uma noticia

DELETE 'sistemas/noticias/1'


Exemplos de uso do PostMan:

Metodo GET - all

Exemplo GET - all

Metodo GET - ById

Exemplo GET - ById

Metodo POST

Exemplo POST

Metodo PUT

Exemplo PUT

Metodo DELETE

Exemplo DELETE

Estrutura do projeto

Banco de dados:

Após a migration duas colunas são criadas sendo elas:

  • Nome da noticia
  • Conteudo da noticia

Após isso foi Criado uma NoticiaModel, Defini dentro do model:

  • O nome da tabela
  • O nome da coluna da chave primaria (pois por padrão busca por 'id' e eu modifiquei para 'id_noticia_tbn');
  • Os campos que podem ser preenchidos (no caso apenas nome e conteudo)

Controller e Rotas

Criado um `NoticiaController` por meio do comando


'php artisan make:controller NoticiaController -r'

adicionei a flag '-r' - que significa 'Resources' utilizando esta tag é criado um controller com funções já pre definidas para serem trabalhadas como API.

Em rotas: supondo que estou criando uma api de um sistema existente. então resolvi criar uma nomenclatura 'sistema' simulando uma url ja existente e logo após a rota para consumir dados da noticia


Noticia Controller

Index - Retorna todas as noticias

Store - Armazena a noticia

Show - Exibe uma noticia passada como parametro

Update - Atualiza uma noticia passada como parametro

Delete - Deleta uma noticia passada como parametro


Faker

Faker é uma livraria externa que fornece dados falsos, muito utilizada para testar funcionalidades que precisam de dados.

O laravel possui uma função nativa fake() - que usa esta biblioteca e gera dados falsos

neste caso foi criado uma Factory nomeada de NoticiasModelFactory dentro de Database\Factory.

  • Factory, em laravel é um 'espaço' que tem como função gerar dados em grande quantidade, uma Fábrica de dados que foi utilizada para gerar dados falsos para testes.

E em Database\Seeders, um NoticiasSeeder, uma seeder tem como função 'chamar' uma factory executar e enviar para o banco de Dados.

User Seeder

Gera um usuario para testar resgistro, login e chave de JWT token

php artisan db:seed --class=UserSeeder

A senha padrão para usuario criado via seeder é: password

About

Projeto criado com ênfase em API, com o objetivo de criar um CRUD e relacionar consultas com o banco havendo duas colunas: Nome e Conteúdo de uma Noticia.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published