/api-marvel-clone-laravel-mysql

Api Marvel Clone with Laravel and Mysql

Primary LanguagePHP


Logo

Marvel API Clone: Documentação

Mysql 8 + Laravel 8

Sobre o Prjeto

Projeto que remonta parte da API da Marvel utilizando o framework Laravel 8 e banco de dados Mysql 8.

Endpoints disponíveis:

  • /v1/public/characters
  • /v1/public/characters/{characterId}
  • /v1/public/characters/{characterId}/comics
  • /v1/public/characters/{characterId}/events
  • /v1/public/characters/{characterId}/series
  • /v1/public/characters/{characterId}/stories

Framworks Utilizados

Começando

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisitos

Instalação

  1. Faça eownload e descompacte a versão em https://github.com/bartollo/clone-api-marvel-laravel
  2. Entre na pasta do projeto e digite no console composer install
  3. Install javascript assets npm install
  4. Crie o seu arquivo .env com os dados do seu ambiente.
  5. Execute as migrations para criar o banco de dados php artisan migrate
  6. Execute os seeders para popular o banco de dados.
  7. Caso prefira fazer a importação do .sql ao invés de executar as migrations e seeders. O arquivo marvel_db.sql está na pasta raiz do projeto.
  8. Execute o laravel server com o comando php artisan serve

Utilzação

Method URI Descrição
GET/HEAD api/characters Exibe lista de personagens.
GET/HEAD api/characters/{characterId} Exibe personagem de acordo com especificação do seu id.
GET/HEAD api/characters/{characterId}/comics Exibe lista de COMICS relacionadas ao personagem especificado.
GET/HEAD api/characters/{characterId}/events Exibe lista de EVENTS relacionadas ao personagem especificado.
GET/HEAD api/characters/{characterId}/series Exibe lista de SERIES relacionadas ao personagem especificado.
GET/HEAD api/characters/{characterId}/stories Exibe lista de STORIES relacionadas ao personagem especificado.

Dados api/characters e api/characters/{characterId}

Campo Descrição Tipo
id Código do personagem Inteiro
name Nome do personagem String
description Descrição do personagem String
modified Data de Atualização do personagem Data
resourceURI URI do personagem String
thumbnail Array com Dados do Thumbnail do personagem String
comics Array com Dados das COMICS do personagem Array
series Array com Dados das SERIES do personagem Array
events Array com Dados das EVENTS do personagem Array
stories Array com Dados das STORIES do personagem Array
url Array com Dados das URLs do personagem Array

Dados api/characters/{characterId}/comics

Campo Descrição Tipo
resourceURI URI do COMIC String
name Nome do COMIC String

Dados api/characters/{characterId}/events

Campo Descrição Tipo
resourceURI URI do EVENT String
name Nome do EVENT String

Dados api/characters/{characterId}/series

Campo Descrição Tipo
resourceURI URI da SERIE String
name Nome da SERIE String

Dados api/characters/{characterId}/stories

Campo Descrição Tipo
resourceURI URI do STORY String
name Nome do STORY String
type Tipo da STORY String

Os parâmetros e códigos de Erros são aplicados a todos os EndPoints informados.

Parâmetros:

  1. orderBy (String): Define o campo que vai ordenar o resultado exibido. Valores Aceitos: id, name.
  2. limit (inteiro): Limita a resultado definido para o número especificado informado.
  3. offset (inteiro): Ignora o número especificado de recursos no conjunto de resultados.
  4. name (String): Define o valor para busca no campo nome. (Em Teste 🚨)

Error Status Codes:

  1. 409 - Limit greater than 100.
  2. 409 - Limit invalid or below 1.
  3. 409 - Invalid or unrecognized parameter.
  4. 409 - Empty parameter.
  5. 409 - Invalid or unrecognized ordering parameter.
  6. 409 - Too many values sent to a multi-value list filter.
  7. 409 - Invalid value passed to filter.

Formato Padrão de Resposta

  1. code (int, optional): The HTTP status code,
  2. status (string, optional): Descrição do status.,
  3. copyright (string, optional): Dados de copyright,
  4. attributionText (string, optional): Informações do Data Provider,
  5. attributionHTML (string, optional): Informações do Data Provider em HTML.,
  6. data (CharacterDataContainer, optional): Resultado da chamada,
  7. etag (string, optional): Um valor resumido do conteúdo retornado pela chamada.
{
    "code": 200,
    "status": "OK",
    "copyright": "© 2021 MARVEL",
    "attributionText": "Data provided by Marvel. © 2021 MARVEL",
    "attributionHTML": "<a href=\"http://marvel.com\">Data provided by Marvel. © 2021 MARVEL</a>",
    "etag": "f0fbae65eb2f8f28bdeea0a29be8749a4e67acb3",
    "data": {
}  

Testes

php artisan test

Observação

  1. Os dados apresentados pela API não são os mesmos da Marvel. Todos as informações estão sendo geradas pelas factories através do classe fake.

Próximas Implementações

  1. Implementação de Proxy Design Pattern: Criação de classes Proxy que herdarão a classe Model e farão a interação entre a classe controller e resource. Nesta classe irá existir metods get e set e outros.

Licença

Distributed under the MIT Licença. See LICENSE for more information.

Contato

Luiz Bartolomeu - luizbart@gmail.com

Project Link: https://github.com/your_username/repo_name