Olist API v0.0.1
Resumo
Está api fornece uma interface para manutenção de anúncios, no formato RESTful, como backend foi utilizado o Expressjs. Está API fornece os 4 métodos HTTP: GET, POST, DELETE e UPDATE
API valida todos os dados enviados antes de persistir na base.
Base de dados usado é MySQL
Instalação
Criação da Base de dados
Executar o seguinte script SQL em uma base de dados previamente selecionada:
NOT EXISTS `anuncios` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `categoria` ENUM('produto','serviço') NOT NULL, `titulo` VARCHAR(60) NOT NULL, `descricao` TEXT NOT NULL, `estoque` INT(11) NOT NULL DEFAULT 0, `preco` DECIMAL(10,2) NOT NULL, `embalagem_largura` FLOAT(11) NULL DEFAULT NULL, `embalagem_altura` FLOAT(11) NULL DEFAULT NULL, `embalagem_profundidade` FLOAT(11) NULL DEFAULT NULL, `embalagem_peso` FLOAT(11) NULL DEFAULT NULL, `status` TINYINT(1) NOT NULL DEFAULT 0, `vendedor_nome` VARCHAR(40) NOT NULL, `vendedor_telefone` VARCHAR(15) NOT NULL, `vendedor_email` VARCHAR(100) NOT NULL, PRIMARY KEY (`id`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
Configurações
Antes de executar a aplicação, é necessário realizar algumas configurações. Abra o arquivo:
config/default.yaml
E configure a porta e os dados para conexão na base.
Exemplo:
server: 9000 database: client: 'mysql' host: 'localhost' user: 'root' password: '*****' database: 'database'
Mais detalhes sobre o sistema de configuração consulte: https://github.com/lorenwest/node-config
API
Refêrencia
Endpoint | Descrição |
---|---|
GET /api/:id | Recupera um anúncio pelo id fornecido |
POST /api/ | Cadastra um anúncio |
PUT /api/:id | Atualiza anúncio pelo id fornecido, |
DELETE /api/:id | Remove um anúncio |
Formato
Os dados devem ser enviado no formato JSON e serão entregue no formato JSON.
Validação
Caso ocorra erro de validação, um json de erro será retornado :
Exemplo:
{
error: true,
errors: [
'Título Obrigatório',
'Descrição Obrigatório',
'Embalagem Altura deve ser decimal',
'Embalagem Profundidade deve ser decimal',
'Embalagem Peso deve ser decimal',
'Status deve ser valor Booleano',
'Telefone do vendedor inválido',
'E-mail do vendedor inválido',
'Nome do vendedor Obrigatório',
'Telefone do vendedor Obrigatório',
'E-mail do vendedor Obrigatório',
'Título deve ter no máximo 60 letras',
'Categoria deve ser produto ou serviço',
'Estoque deve ser inteiro',
'Preço deve ser decimal',
'Embalagem Largura deve ser decimal'
]
}
Autor
André Timermann E-mail: andre@andregustavo.org - 2015
Nota: Aplicação desenvolvida para fins de avaliação, não deve ser usada em ambiente de produção.