API para controle de perguntas e respostas
Você deverá ter em sua máquina os seguinte itens:
- Git
- Node.js 10.0.0 (ou superior)
- Postgres (Caso prefira poderá executá-lo através do Docker (docker-compose.yml))
-
Faça um Fork ou clone este repositório.
-
Instale as dependências do projeto:
npm install
ou se você usa yarn:
yarn
-
Crie um arquivo
.env
no diretório raiz, utilize o arquivo.env-example
como padrão. -
Tenha o Postgres rodando em sua máquina com um database com nome
bexs
(caso queira outro nome altere o arquivo.env
) — ou execute o Docker Compose (neste caso o databasebexs
será criado automaticamente):docker-compose up
Será executado o Postgres em sua máquina virtual docker na porta
5432
, isso pode ser alterado no arquivodocker-compose.yml
. -
Execute
npx sequelize db:migrate
(ou se você usa yarnyarn sequelize db:migrate
) para gerar as tabelas no database.
Para início da aplicação, execute:
Desenvolvimento
(com nodemon):
npm run dev
ou se você usa yarn:
yarn dev
npm run start
ou se você usa yarn:
yarn start
Isso iniciará o servidor com base nos dados informados no arquivo .env
, caso tenha seguido o exemplo iniciará em localhost:3333
Os testes estão localizados na pasta __tests__
.
Use o comando abaixo para executar os testes:
npm test
ou se você usa yarn:
yarn test
OBS:. A execução dos testes executa o script sequelize db:migrate
, criando as tabelas no database
OBS2:. A execução dos testes efetua a limpeza das tabelas ao final dos testes
OBS:. O projeto contêm os arquivos insomnia.json
e bens.postman
, para o uso das API's no Insomnia e no Postman respectivamente.
OBS:. O parâmetro page
e o parâmetro perPage
são opcionais. Caso os mesmos não sejam fornecidos, serão utilizados os valores 1 e 10 respectivamente`
Ação:
Retorna uma lista de perguntas.
{
"user": "Jessiley Oliveira",
"text": "Isso é uma pergunta?"
}
Ação:
Cadastra uma nova pergunta.
OBS:. O parâmetro page
e o parâmetro perPage
são opcionais. Caso os mesmos não sejam fornecidos, serão utilizados os valores 1 e 10 respectivamente`
OBS2:. A paginação é feita nas respostas que a pergunta contém`
Ação:
Retorna uma pergunta (e suas respostas) com base no ID
{
"user": "Jessiley Oliveira",
"text": "Isso é uma resposta."
}
Ação:
Cadastra uma nova resposta.