Informações |
---|
Esta REST API foi desenvolvida em resposta ao desafio proposto pelo Plantão Ativo. Sua principal funcionalidade é ser um gerenciador de postagens com seus respectivos títulos, autores, conteúdos e tags. Junto com a API, segue um Front-end em react para teste mais visuais relacionados a integração dos Endpoints com uma UI (User Interface). Lembrando que para a realização de testes unitários não se faz obrigatório a instalação do Front-end, pois sua função é demonstrar como uma aplicação real faria o uso da API. |
Para ser redirecionado a documentação clique aqui.
PHP >= 7.2.5
Composer
MySQL >= 5.6
1 - Faça o download do repositório
$ git clone https://github.com/Clys-man/pa-desafio.git
2 - Na pasta do projeto faça a cópia do arquivo .env.example
e renomeie-o para .env
$ cp .env.example .env
3 - No arquivo .env
configure as variáveis de ambiente da aplicação com suas informações
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
4 - Baixe os pacotes necessários para inicialização do projeto
$ composer install
5 - Gere a chave da aplicação
$ php artisan key:generate
6 - Suba as Migrations para o banco de dados
$ php artisan migrate --seed
Nota:
O comando acima também irá fazer o povoamento do banco de dados com informações, caso não queira remova o paramêtro --seed
7 - Crie as chaves de criptografia usadas pelo Passport
$ php artisan passport:install
8 - Inicie o servidor no seu ambiente local
$ php artisan serve
9 - Abra seu navegador e acesse: http://127.0.0.1:8000/
Os Endpoints suportados pela API são:
POST
Endpoints | Descrição |
---|---|
/auth/login |
Realiza a autenticação e gerar o token de acesso. |
/auth/register |
Realiza o registro de um novo usuário. |
GET
Endpoints | Descrição |
---|---|
/api/posts |
Retorna a lista de todos os posts, 30 por página |
/api/tags |
Retorna a lista de todas os tags, 30 por página |
/api/users |
Retorna a lista de todos os usuários, 30 por página |
POST
Endpoints | Descrição |
---|---|
/api/posts/ |
Realiza a criação de um novo post |
/api/tags/ |
Realiza a criação de uma nova tag |
GET /{id}
Endpoints | Descrição |
---|---|
/api/posts/{id} |
Retorna as informações de um post específico |
/api/tags/{id} |
Retorna as informações de uma tag específica |
/api/users/{id} |
Retorna as informações de um usuário específico |
PUT /{id}
Endpoints | Descrição |
---|---|
/api/posts/{id} |
Realiza a edição de um post específico |
/api/tags/{id} |
Realiza a edição de uma tag específica |
DELETE /{id}
Endpoints | Descrição |
---|---|
/api/posts/{id} |
Realiza a remoção de um post específico |
/api/tags/{id} |
Realiza a remoção de uma tag específica |
Os parâmetros client_id
, tag
e page
são recebidos URI.
parâmetro | descrição | ||
---|---|---|---|
client_id |
Identificado do client da requisição | string | requirido |
tag |
Filtras os posts pelas tags | string | opcional |
page |
Número da pagina para listagem | number | opcional |
Esta API utiliza um parâmetro para realização de consultas.
Os parâmetros que devem ser enviados para este tipo de autenticação são os seguintes:
clientId - Chave utilizada nos requests para autorização.
Para a listagem de mais parâmetros ou informações mais específicas de cada Endpoint acesse a documentação
Abaixo estão alguns exemplos de como realizar o uso dos Endpoints
GET /api/posts?clientId={client_id}&tag=node&page=1
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"author": "Marcia Thiel",
"title": "Notion",
"content": "Sed soluta nemo et consectetur reprehenderit ea reprehenderit sit.",
"tags": [
"node",
"planning",
"collaboration"
]
}
]
GET /api/posts/{id}?clientId={client_id}
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"author": "Marcia Thiel",
"title": "Notion",
"content": "Sed soluta nemo et consectetur reprehenderit ea reprehenderit sit.",
"tags": [
"organization",
"planning",
"collaboration"
]
}
]
POST /api/posts?clientId={client_id}
Headers
Authentication: Bearer JWT
Accept: application/json
Content-Type: application/json
Body
{
"author": "Marcia Thiel",
"title": "Notion",
"content": "Sed soluta nemo et consectetur reprehenderit ea reprehenderit sit.",
"tags": [1,2,3]
}
Headers
Content-Type: application/json
Body
{
"code": 200,
"msg": "Objeto criado com sucesso"
}
PUT /api/posts/{id}?clientId={client_id}
Headers
Authentication: Bearer JWT
Accept: application/json
Content-Type: application/json
Body
{
"id": 1,
"author": "Marcia Thiel",
"title": "Notion",
"content": "Sed soluta nemo et consectetur reprehenderit ea reprehenderit sit.",
"tags": [1,2,3]
}
Headers
Content-Type: application/json
Body
{
"code": 200,
"msg": "Objeto criado com sucesso"
}
DELETE /api/posts/{id}?clientId={client_id}
Headers
Authentication: Bearer JWT
Content-Type: application/json
Headers
Content-Type: application/json
Body
{
"code": 204,
"msg": "No content"
}
Como falado ateriomente, foi desenvolvida um parte visual para integração da API, o guia de instalação e configuração esta disponível em Plantão Ativo Blog React
@Clys-man |
---|