Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/nbproject/private/
5 changes: 5 additions & 0 deletions .htaccess
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
113 changes: 103 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ Sua tarefa consiste em desenvolver uma API RESTful para manipular um determinado
# Requisitos
A escolha do recurso deverá ser feita pelo desenvolvedor, atendendo apenas os requisitos mínimos abaixo:

* Deverá conter um ID
* Deverá conter pelo menos quatro propriedades (exemplos: nome, email, etc.)
* Deverá conter campos que armazenem as datas de criação e alteração do recurso
* OK - Deverá conter um ID
* OK - Deverá conter pelo menos quatro propriedades (exemplos: nome, email, etc.)
* OK - Deverá conter campos que armazenem as datas de criação e alteração do recurso

A API deverá atender às seguintes exigências:

* Listagem de todos os recursos
* Busca de um recurso pelo ID
* Criação de um novo recurso
* Alteração de um recurso existente
* Exclusão de um recurso
* Aceitar e retornar apenas JSON
* Deverá possuir algum método de autenticação para utilização de seus endpoints
* OK - Listagem de todos os recursos
* OK - Busca de um recurso pelo ID
* OK - Criação de um novo recurso
* OK - Alteração de um recurso existente
* OK - Exclusão de um recurso
* OK - Aceitar e retornar apenas JSON
* OK - Deverá possuir algum método de autenticação para utilização de seus endpoints

# Ferramentas
* PHP
Expand All @@ -32,3 +32,96 @@ A API deverá atender às seguintes exigências:
1. Código fonte, nome do banco de dados, tabelas e campos devem estar em inglês

**Inclua no seu commit todos os arquivos necessários para que possamos testar o código.**


# Implementação

# Teste Serasa

* Executar o index.html da pasta TesteSerasa.


# Endpoints públicos
* GET api/v1/users
** Obter lista com todos usuários
* GET api/v1/users/{id}
** Obter usuário específico
* POST api/v1/users
** Incluir novo usuário
* PUT api/v1/users
** Alterar usuário
* DELETE api/v1/users/{id}
** Excluir usuário
* POST auth
** Obter token de acesso. Token deverá ser enviado no header da requisição (parâmetro "X-Token").

# Endpoints privados
* GET api/v1/contacts
** Obter lista com todos contatos
* GET api/v1/contacts/{id}
** Obter contato específico
* POST api/v1/contacts
** Incluir novo contato
* PUT api/v1/contacts
** Alterar contato
* DELETE api/v1/contacts/{id}
** Excluir contato

# Criar banco de dados
```
CREATE DATABASE IF NOT EXISTS `test_rest` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `test_rest`;

DROP TABLE IF EXISTS `contact`;
CREATE TABLE `contact` (
`id_contact` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`email` varchar(100) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`info` text,
`create_date` datetime NOT NULL,
`update_date` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id_user` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(60) NOT NULL,
`create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_date` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `contact`
ADD PRIMARY KEY (`id_contact`);

ALTER TABLE `user`
ADD PRIMARY KEY (`id_user`);

ALTER TABLE `contact`
MODIFY `id_contact` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `user`
MODIFY `id_user` int(11) NOT NULL AUTO_INCREMENT;
```

# Executar aplicação

```
# git clone https://github.com/VagnerFP/teste.git

# cd teste/

# composer install

# php -S localhost:8000 -t ./

```

# Testar aplicação

* Ferramenta
** Postman (https://www.getpostman.com/).
*** Arquivo com as requisições para o Postman (TesteRest.postman_collection.json)
205 changes: 205 additions & 0 deletions TesteRest.postman_collection.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
{
"variables": [],
"info": {
"name": "TesteRest",
"_postman_id": "2c160734-40d1-2c8c-82f6-23da762a1fea",
"description": "",
"schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json"
},
"item": [
{
"name": "postUsers",
"request": {
"url": "http://localhost:8000/api/v1/users",
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"description": ""
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Teste cadastro\",\n\t\"email\": \"meu@email.com\",\n\t\"password\": \"1234\"\n}"
},
"description": ""
},
"response": []
},
{
"name": "getUsers_id",
"request": {
"url": "http://localhost:8000/api/v1/users/1",
"method": "GET",
"header": [],
"body": {},
"description": ""
},
"response": []
},
{
"name": "putUsers",
"request": {
"url": "http://localhost:8000/api/v1/users",
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"description": ""
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"id_user\": \"1\",\n\t\"name\": \"Meu Cadastro\",\n\t\"email\": \"meu@email.com\",\n\t\"password\": \"1234\"\n}"
},
"description": ""
},
"response": []
},
{
"name": "deleteUsers_id",
"request": {
"url": "http://localhost:8000/api/v1/users/1",
"method": "DELETE",
"header": [],
"body": {},
"description": ""
},
"response": []
},
{
"name": "getUsers",
"request": {
"url": "http://localhost:8000/api/v1/users",
"method": "GET",
"header": [],
"body": {},
"description": ""
},
"response": []
},
{
"name": "postAuth",
"request": {
"url": "http://localhost:8000/auth",
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"description": ""
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"email\": \"meu@email.com\",\n\t\"password\": \"1234\"\n}"
},
"description": ""
},
"response": []
},
{
"name": "postContacts",
"request": {
"url": "http://localhost:8000/api/v1/contacts",
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"description": ""
},
{
"key": "X-Token",
"value": "eyJlIjoibWV1QGVtYWlsLmNvbSIsInAiOiI4MWRjOWJkYjUyZDA0ZGMyMDAzNmRiZDgzMTNlZDA1NSJ9",
"description": ""
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Cadastro 1\",\n\t\"email\": \"cadastro_um@email.com\",\n\t\"phone\": \"(47)91234-5678\",\n\t\"address\": \"Avenida Brasil\",\n\t\"info\": \"Apto 7514\"\n}"
},
"description": ""
},
"response": []
},
{
"name": "putContacts",
"request": {
"url": "http://localhost:8000/api/v1/contacts",
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"description": ""
},
{
"key": "X-Token",
"value": "eyJlIjoibWV1QGVtYWlsLmNvbSIsInAiOiI4MWRjOWJkYjUyZDA0ZGMyMDAzNmRiZDgzMTNlZDA1NSJ9",
"description": ""
}
],
"body": {
"mode": "raw",
"raw": "{\n \"id_contact\": \"14\",\n \"name\": \"Cadastro Um\",\n \"email\": \"cadastro_um@email.com\",\n \"phone\": \"(47)91234-5678\",\n \"address\": \"Avenida Brasil\",\n \"info\": \"Apto 7514\"\n}"
},
"description": ""
},
"response": []
},
{
"name": "getContacts_id",
"request": {
"url": "http://localhost:8000/api/v1/contacts/14",
"method": "GET",
"header": [
{
"key": "X-Token",
"value": "eyJlIjoibWV1QGVtYWlsLmNvbSIsInAiOiI4MWRjOWJkYjUyZDA0ZGMyMDAzNmRiZDgzMTNlZDA1NSJ9",
"description": ""
}
],
"body": {},
"description": ""
},
"response": []
},
{
"name": "deleteContacts_id",
"request": {
"url": "http://localhost:8000/api/v1/contacts/15",
"method": "DELETE",
"header": [
{
"key": "X-Token",
"value": "eyJlIjoibWV1QGVtYWlsLmNvbSIsInAiOiI4MWRjOWJkYjUyZDA0ZGMyMDAzNmRiZDgzMTNlZDA1NSJ9",
"description": ""
}
],
"body": {},
"description": "Excluir contato"
},
"response": []
},
{
"name": "getContacts",
"request": {
"url": "http://localhost:8000/api/v1/contacts",
"method": "GET",
"header": [
{
"key": "X-Token",
"value": "eyJlIjoibWV1QGVtYWlsLmNvbSIsInAiOiI4MWRjOWJkYjUyZDA0ZGMyMDAzNmRiZDgzMTNlZDA1NSJ9",
"description": ""
}
],
"body": {},
"description": ""
},
"response": []
}
]
}
Loading