Skip to content

Projeto pessoal de API REST Node.js (back-end) para anotações (ideias, lembretes, compras?).

License

Notifications You must be signed in to change notification settings

Goliass/anotacoes-backend-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English readme

Anotações

Projeto pessoal de API REST Node.js (back-end) para anotações (ideias, lembretes, compras?).

Projeto também com o objetivo de colocar em prática / relembrar tecnologias, frameworks, conceitos, etc. da área de desenvolvimento de software que estou estudando: JavaScript/ECMAScript, Node.js / Express.

Em um futuro não muito distante espero melhorá-lo, aplicar correções, incluir novas funcionalidades e integrá-lo com o projeto Anotacoes (front-end).

Como executar (uma das formas) este projeto (sistema operacional Ubuntu/Linux)

  • Criação do banco de dados e tabelas utilizadas no projeto (Obs: favor pesquisar como instalar e acessar o MySQL Server)

    CREATE DATABASE notes;
    USE notes;
    
    CREATE TABLE `notesToDo` (
      `key` INT UNSIGNED NOT NULL PRIMARY KEY,
      `description` VARCHAR(255) NOT NULL
    );
    
    CREATE TABLE `notesDone` (
      `key` INT UNSIGNED NOT NULL PRIMARY KEY,
      `description` VARCHAR(255) NOT NULL
    );
    
    CREATE TABLE `notesDeleted` (
      `key` INT UNSIGNED NOT NULL PRIMARY KEY,
      `description` VARCHAR(255) NOT NULL
    );
  • Download do projeto

  • Configurações e execução do servidor (terminal) (após extração do projeto / arquivo ZIP)

    • No arquivo login.js do projeto, substituir <user> e <password> pelo usuário e senha definidos na instalação do MySQL.

    • [se não estiver instalado] Instalar o gerenciador de pacotes NPM:

      $ sudo npm install npm -g 
    • Acessar o diretório do servidor:

      $ cd server
    • Instalar as dependências (pacotes) utilizados pelo projeto:

      $ sudo npm install
    • Executar o servidor (Ctrl + C para Cancelar):

      $ npm start

      ou

      $ npm run dev

      Se o servidor executar corretamente, uma das mensagens exibidas no terminal deverá ser parecida com 'Server running on port [porta]...'.


  • Com o servidor executando (ver acima), as requisições às seguintes rotas podem ser realizadas (no terminal com o comando curl ou com o programa Postman, por exemplo):

    $ curl -X GET http://localhost:3001/ -v
    $ curl -X GET 'http://localhost:3001/search?description=o' -v

    $ curl -X GET http://localhost:3001/notes/notes-to-do -v 
    $ curl -X GET http://localhost:3001/notes/notes-to-do/1 -v 
    $ curl -X POST http://localhost:3001/notes/notes-to-do \
        -H 'Content-Type: application/json' \
        -d '{
          "key": 1,
          "description": "anotacao adicionada"
        }' -v
    $ curl -X PUT http://localhost:3001/notes/notes-to-do/1 \
        -H 'Content-Type: application/json' \
        -d '{
          "description": "atualizacao da descricao"
        }' -v
    $ curl -X DELETE http://localhost:3001/notes/notes-to-do/1 -v

    $ curl -X GET http://localhost:3001/notes/notes-done -v 
    $ curl -X GET http://localhost:3001/notes/notes-done/1 -v
    $ curl -X POST http://localhost:3001/notes/notes-done \
    -H 'Content-Type: application/json' \
    -d '{
      "key": 1,
      "description": "anotacao verificada"
    }' -v
    $ curl -X DELETE http://localhost:3001/notes/notes-done/1 -v

    $ curl -X GET http://localhost:3001/notes/notes-deleted -v 
    $ curl -X GET http://localhost:3001/notes/notes-deleted/1 -v 
    $ curl -X POST http://localhost:3001/notes/notes-deleted \
    -H 'Content-Type: application/json' \
    -d '{
      "key": 1,
      "description": "anotacao excluida"
    }' -v
    $ curl -X DELETE http://localhost:3001/notes/notes-deleted/1 -v
  • Verificação das respostas (alguns dos tópicos listados abaixo não aparecem em todas as requisições / rotas):

    • HTTP status code e Location:

      >
      < HTTP/1.1 200 OK
      <
      
      >
      < HTTP/1.1 201 Created
      <...
      < Location: /notes/notes-to-do/1
      
      >
      < HTTP/1.1 201 Created
      <...
      < Location: /notes/notes-done/1
      
      >
      < HTTP/1.1 201 Created
      <...
      < Location: /notes/notes-deleted/1
      
      >
      < HTTP/1.1 204 No Content
      <...
      
      >
      < HTTP/1.1 400 Bad Request
      <...
      
      >
      < HTTP/1.1 404 Not Found
      <...
      
      >
      < HTTP/1.1 409 Conflict      
      <...
      
      >
      < HTTP/1.1 500 Internal Server Error
      <...
      
    • Textos possíveis em formato JSON no corpo da resposta:

      {
        "message": "https://github.com/Goliass/anotacoes-backend-nodejs"
      }
      {
          "notesToDo": [
              {
                  "key": 1,
                  "description": "anotacao adicionada"
              }
          ],
          "notesDone": [
              {
                  "key": 1,
                  "description": "anotacao verificada"
              }
          ],
          "notesDeleted": [
              {
                  "key": 1,
                  "description": "anotacao excluida"
              }
          ]
      }

      {
          "notes": [
              {
                  "key": 1,
                  "description": "anotacoes"
              }
          ]
      }
      {
          "notes": []
      }
      {
          "note": {
              "key": 1,
              "description": "anotacao adicionada"
          },
          "links": [
              {
                  "href": "http://localhost:3001/notes/notes-to-do/1",
                  "rel": "Update",
                  "method": "PUT",
                  "params": {
                      "description": "new value"
                  }
              },
              {
                  "href": "http://localhost:3001/notes/notes-to-do/1",
                  "rel": "Delete",
                  "method": "DELETE"
              }
          ]
      }

      {
          "note": {
              "key": 1,
              "description": "anotacao verificada"
          },
          "links": [
              {
                  "href": "http://localhost:3001/notes/notes-done/1",
                  "rel": "Delete",
                  "method": "DELETE"
              }
          ]
      }
      {
          "note": {
              "key": 1,
              "description": "anotacao excluida"
          },
          "links": [
              {
                  "href": "http://localhost:3001/notes/notes-deleted/1",
                  "rel": "Delete",
                  "method": "DELETE"
              }
          ]
      }
      {
          "errors": [
              {
                  "value": 0,
                  "msg": "The key parameter must be an integer value greater than or equal to 1",
                  "param": "key",
                  "location": "body"
              },
              {
                  "value": "",
                  "msg": "The description parameter must have at least 1 character",
                  "param": "description",
                  "location": "body"
              }
          ]
      }

Agradecimentos / fontes de estudo (entre outros)

Autor(es)

Elías Sauthier

Licença

Licença MIT


About

Projeto pessoal de API REST Node.js (back-end) para anotações (ideias, lembretes, compras?).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published