API para processo seletivo GranCursos

####Desenvolvida por Fernando Ferreira

  • ###Requisitos

    • Possuir o framework Lumen instalado Link.
    • Possuir o composer instalado Link.
    • No terminal, certificar que os arquivos do JWT estão instalados, comando composer require firebase/php-jwt
    • Habilitar o mysql no arquivo php.ini
    • Com o mysql instalado, criar um schema com o nome "processo-seletivo"
  • ###[Rodando a api via server](#Rodando a api via server)

    • No diretório raiz do projeto:
      • Executar os migrations, caso não tenha os arquivos:
        • php artisan make:migration criar_tabela_eventos --create=eventos
        • php artisan make:migration criar_tabela_noticias --create=noticias
        • php artisan make:migration criar_tabela_usuarios --create=usuarios
      • Executar o comando php artisan migrate
      • Para popular o banco com dados aleatórios, decisão opcional:
        • Criar os seeders caso o projeto não possua:
          • php artisan make:seeder EventosSeeder
          • php artisan make:seeder NoticiasSeeder
          • php artisan make:seeder UsuariosSeeder
        • Compilar no terminal php artisan db:seed
      • Executar php -S localhost:8000 -t public
  • ###Endpoints

    • GET http://localhost:8000/api/noticias

      • Retorna uma lista de notícias, por padrão, retorna os primeiros 5 itens;
      • Para paginar as consultas, deve-se informar o QueryParameter ?per_page=numero_de_itens_por_pagina
    • POST http://localhost:8000/api/usuario/cadastrar

      • Body: { "nome" : string, "email" : string, "senha" : string }
      • Type: Json
      • ResponseCode: 400, 201, 500
    • POST http://localhost:8000/api/usuario/login

      • Body: { "email" : string, "senha" : string }
      • Type: Json
      • ResponseCode: 400, 200, 500
      • Response: { "nome": string, "email": string, "updated_at": DateTime, "created_at": DateTime, "id": int, "token": string }
    • GET http://localhost:8000/api/eventos

      • API protegida
      • Requer no Header a autenticação no formato: {"api_token": token}
      • Token é fornecido no login ou no cadastro
      • ResponseCode: 401, 200, 500
      • Type: Json