xy-inc - Backend as a Service
- Nodejs 6+
- Express
- Mongo
- Redis
- Mongoose
- Mocha
- Chai
- Istanbul
- Docker
- docker
- docker-compose
Necessário clonar o projeto:
git clone https://github.com/thyagoluciano/xy-inc.git
Acesse o diretório do projeto:
cd xy-inc/docker
Execute o comando:
docker-compose up
Para subir mais de uma instâncias da api rode o comando:
docker-compose scale api=10
Para reduzir o número de instâncias é so rodar o mesmo comando reduzindo o valor das instâncias:
docker-compose scale api=1
Executar os testes unitários
docker-compose -f docker-compose-unit-test.yml up
Para executar os testes de integração
docker-compose -f docker-compose-integration-test.yml up
Método | Rota | Descrição |
---|---|---|
POST | /api/v1/entity |
Criação de uma nova entidade |
GET | /api/v1/entity |
Retorna todas as entidades criadas |
GET | /api/v1/entity/:id |
Retorna uma entidade específica |
Exemplo: POST /api/v1/entity
- Criação de uma nova entidade
curl -X POST \
http://localhost:8080/api/v1/entity \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"entity": "produto",
"fields": [
{ "name": "nome", "type": "string", "required": "true" },
{ "name": "preco", "type": "decimal", "required": "true" },
{ "name": "descricao", "type": "string", "required": "true" },
{ "name": "ind_disponivel", "type": "boolean", "required": "true" },
{ "name": "fabricacao", "type": "date", "required": "true" },
{ "name": "tags", "type": "array", "required": "false" }
]
}'
Exemplo: GET /api/v1/entity
- Retorna todas as entidades criadas
curl -X GET \
http://localhost:8080/api/v1/entity \
-H 'cache-control: no-cache' \
Exemplo: GET /api/v1/entity/:id
- Retorna uma entidade com um determinado id
curl -X GET \
http://localhost:3000/api/v1/entity/5949e8c7f604fb002be6a65d \
-H 'cache-control: no-cache' \
Método | Rota | Descrição |
---|---|---|
POST | /api/v1/:model |
Insere um novo registro |
GET | /api/v1/:model |
Retorna todos os registros |
GET | /api/v1/:model/:id |
Retorna um registro específico |
PUT | /api/v1/:model/:id |
Atualiza um registro |
DELETE | /api/v1/:model/:id |
Exclui um registro |
Exemplo: POST /api/v1/:model
- Insere um novo registro
curl -X POST \
http://localhost:8080/api/v1/produto \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"nome": "Playstation 4",
"preco": 1400.00,
"descricao": "Os maiores nomes do mundo dos jogos ganham vida em PS4, desde os icônicos personagens de Star Wars™ Battlefront™ até o futuro combate de Call of Duty®: Infinite Warfare.",
"ind_disponivel": true,
"fabricacao": "01/01/2017",
"tags": ["Games", "ps4"]
}'
Exemplo: GET /api/v1/:model
- Retorna todos os registros
curl -X GET \
http://localhost:8080/api/v1/produto \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
Exemplo: GET /api/v1/:model/:id
- Retorna um registro específico
curl -X GET \
http://localhost:8080/api/v1/produto/5949f93d98ccbc002b544861 \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
Exemplo: PUT /api/v1/:model/:id
- Atualiza um registro
curl -X PUT \
http://localhost:8080/api/v1/produto/5949f93d98ccbc002b544861 \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"nome": "Playstation 4",
"preco": 1900.00,
"descricao": "Os maiores nomes do mundo dos jogos ganham vida em PS4, desde os icônicos personagens de Star Wars™ Battlefront™ até o futuro combate de Call of Duty®: Infinite Warfare.",
"ind_disponivel": true,
"fabricacao": "16/06/2017",
"tags": ["Games", "ps4"]
}'
Exemplo: DELETE /api/v1/:model/:id
- Exclui um registro
curl -X DELETE \
http://localhost:8080/api/v1/produto/5949f93d98ccbc002b544861 \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \