Skip to content

gustavojb1/projeto-labeddit-backend

Repository files navigation

Conteúdo
  1. Sobre o projeto
  2. Exemplos de Requisições
  3. Cobertura dos testes
  4. Documentação no Postman
  5. Contato

Sobre o projeto

O repositório que contém o Front-End dessa aplicação é o labeddit-front.

(voltar para o topo)

Feito com

  • Typescript
  • Node
  • Express
  • SQLite

(voltar para o topo)

Documentação no Postman

Basta seguir o link:

Exemplos de Requisições

Seguem exemplos de como utilizar a API criada neste projeto.

Users

Get all users

// Request
// GET /users
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
[
    {
        "id": "4e25a2da-d325-4c19-8c18-8c4007667820",
        "username": "carldonovan",
        "role": "ADMIN"
    },
    {...},
    {
        "id": "ddb664cc-13b8-450e-8f52-c3cf0b075a06",
        "username": "thomasgrant",
        "role": "NORMAL"
    }
]

(voltar para o topo)

Get User By Id

// Request
// path params = :id
// GET /users/4e25a2da-d325-4c19-8c18-8c4007667820
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
{
    "id": "4e25a2da-d325-4c19-8c18-8c4007667820",
    "username": "carldonovan",
    "role": "ADMIN"
}

(voltar para o topo)

Verify token

// Request
// path params = :token
// GET /users/verify-token/bananinha
// Response
// status 200 OK
{
    "isTokenValid": false
}

(voltar para o topo)

Create User

// Request
// POST /users/signup
// body JSON
{
  "username": "johndoe",
  "email": "[email protected]",
  "password": "bananinha",
  "receiveEmails": false
}
// Response
// status 201 CREATED
{
  "token": "token-jwt-do-john-doe",
  "userId": "id-do-john-doe"
}

(voltar para o topo)

User Login

// Request
// POST /users/login
// body JSON
{
  "email": "[email protected]",
  "password": "gustavo123",
}
// Response
// status 200 OK
{
  "token": "token-jwt-do-gustavo",
  "userId": "id-do-gustavo"
}

(voltar para o topo)

Delete User By Id

// Request
// path params = :id
// DELETE /users/id-do-john-doe
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK

(voltar para o topo)

Posts

Get all posts

// Request
// GET /posts
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
[
    {
        "id": "3ed153dc-e908-4fe6-bc93-5e0b40a9ab26",
        "content": "Que linguagem de programação devo aprender primeiro, Python ou Javascript?",
        "upvotes": 1,
        "downvotes": 0,
        "createdAt": "2023-03-17T04:01:53.790Z",
        "updatedAt": "2023-03-17T04:01:53.790Z",
        "creator": {
            "id": "11d71798-f86f-4fd7-a48e-720151171fd5",
            "username": "johntitor"
        },
        "comments": [
            {
                "id": "557f630a-f80c-47c5-9d18-b083a34e7aef",
                "content": "Depende muito de qual área você focar. Se você quer focar mais em dados, Python primeiro é melhor. Se quiser focar mais em Desenvolvimento Web, Javascript é melhor.",
                "upvotes": 0,
                "downvotes": 0,
                "creator": {
                    "id": "a3ee8f27-f424-40b0-9459-d7dca989bc4a",
                    "username": "juliaschmidt"
                }
            },
            {
                "id": "457fa5b1-7bff-432f-ba7a-445df9e4d3ec",
                "content": "Eu acho que Python é melhor de aprender primeiro, independente de qualquer coisa, porque a sintaxe é muito tranquila, parece que você está escrevendo uma carta para o seu computador.",
                "upvotes": 0,
                "downvotes": 0,
                "creator": {
                    "id": "ddb664cc-13b8-450e-8f52-c3cf0b075a06",
                    "username": "thomasgrant"
                }
            }
        ]
    },
    {...},
    {
        "id": "63f3113f-ce65-41d0-9e73-b14e3f139915",
        "content": "Estudar programação é perceber que x = x + 1 é algo completamente possível!",
        "upvotes": 2,
        "downvotes": 0,
        "createdAt": "2023-03-17T04:08:46.200Z",
        "updatedAt": "2023-03-17T04:08:46.200Z",
        "creator": {
            "id": "ddb664cc-13b8-450e-8f52-c3cf0b075a06",
            "username": "thomasgrant"
        },
        "comments": [
            {
                "id": "db507e1d-a6e6-49bb-8ec4-f9c91a2dded5",
                "content": "A primeira vez que eu vi isso na minha vida demorei uma semana pra conseguir entender. XD",
                "upvotes": 0,
                "downvotes": 0,
                "creator": {
                    "id": "11d71798-f86f-4fd7-a48e-720151171fd5",
                    "username": "johntitor"
                }
            }
        ]
    }
]

(voltar para o topo)

Get Post By Id

// Request
// path params = :id
// GET /posts/3ed153dc-e908-4fe6-bc93-5e0b40a9ab26
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
{
    "id": "3ed153dc-e908-4fe6-bc93-5e0b40a9ab26",
    "content": "Que linguagem de programação devo aprender primeiro, Python ou Javascript?",
    "upvotes": 1,
    "downvotes": 0,
    "createdAt": "2023-03-17T04:01:53.790Z",
    "updatedAt": "2023-03-17T04:01:53.790Z",
    "creator": {
        "id": "11d71798-f86f-4fd7-a48e-720151171fd5",
        "username": "johntitor"
    },
    "comments": [
        {
            "id": "557f630a-f80c-47c5-9d18-b083a34e7aef",
            "content": "Depende muito de qual área você focar. Se você quer focar mais em dados, Python primeiro é melhor. Se quiser focar mais em Desenvolvimento Web, Javascript é melhor.",
            "upvotes": 0,
            "downvotes": 0,
            "creator": {
                "id": "a3ee8f27-f424-40b0-9459-d7dca989bc4a",
                "username": "juliaschmidt"
            }
        },
        {
            "id": "457fa5b1-7bff-432f-ba7a-445df9e4d3ec",
            "content": "Eu acho que Python é melhor de aprender primeiro, independente de qualquer coisa, porque a sintaxe é muito tranquila, parece que você está escrevendo uma carta para o seu computador.",
            "upvotes": 0,
            "downvotes": 0,
            "creator": {
                "id": "ddb664cc-13b8-450e-8f52-c3cf0b075a06",
                "username": "thomasgrant"
            }
        }
    ]
}

(voltar para o topo)

Get all post votes

// Request
// GET /posts/votes
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
[
    {
        "userId": "e3d060d2-b18e-4035-8f95-4f27627fa897",
        "postId": "65fd7570-4b43-4fb8-9d3b-df2d247fab08",
        "vote": 1
    },
    {...},
    {
        "userId": "a3ee8f27-f424-40b0-9459-d7dca989bc4a",
        "postId": "65fd7570-4b43-4fb8-9d3b-df2d247fab08",
        "vote": 1
    }
]

(voltar para o topo)

Create post

// Request
// POST /posts
// Headers:
//   Authorization: <seu_token_de_acesso>
// body JSON
{
    "content": "Preciso estudar mais linguagem Markdown!"
}
// Response
// status 201 CREATED

(voltar para o topo)

Edit Post Vote by Id

// Request
// path params = :id
// PUT /posts/:id/vote
// Headers:
//   Authorization: <seu_token_de_acesso>
// body JSON
{
    "vote": true
}
// Response
// status 200 OK

(voltar para o topo)

Edit Post By Id

// Request
// path params = :id
// PUT /posts/:id
// Headers:
//   Authorization: <seu_token_de_acesso>
// body JSON
{
    "content": "Mudei de ideia. Eu sou ótimo em Markdown!"
}
// Response
// status 200 OK

(voltar para o topo)

Delete Post By Id

// Request
// path params = :id
// DELETE /posts/:id
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK

(voltar para o topo)

Comments

Get all comments

// Request
// GET /comments
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
[
    {
        "id": "557f630a-f80c-47c5-9d18-b083a34e7aef",
        "content": "Depende muito de qual área você focar. Se você quer focar mais em dados, Python primeiro é melhor. Se quiser focar mais em Desenvolvimento Web, Javascript é melhor.",
        "upvotes": 0,
        "downvotes": 0,
        "createdAt": "2023-03-17T04:03:17.624Z",
        "updatedAt": "2023-03-17T04:03:17.624Z",
        "creator": {
            "id": "a3ee8f27-f424-40b0-9459-d7dca989bc4a",
            "username": "juliaschmidt"
        },
        "postId": "3ed153dc-e908-4fe6-bc93-5e0b40a9ab26"
    },
    {...},
    {
        "id": "db507e1d-a6e6-49bb-8ec4-f9c91a2dded5",
        "content": "A primeira vez que eu vi isso na minha vida demorei uma semana pra conseguir entender. XD",
        "upvotes": 0,
        "downvotes": 0,
        "createdAt": "2023-03-17T04:11:26.752Z",
        "updatedAt": "2023-03-17T04:11:26.752Z",
        "creator": {
            "id": "11d71798-f86f-4fd7-a48e-720151171fd5",
            "username": "johntitor"
        },
        "postId": "63f3113f-ce65-41d0-9e73-b14e3f139915"
    }
]

(voltar para o topo)

Get Comment By Id

// Request
// path params = :id
// GET /comments/557f630a-f80c-47c5-9d18-b083a34e7aef
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
{
    "id": "557f630a-f80c-47c5-9d18-b083a34e7aef",
    "content": "Depende muito de qual área você focar. Se você quer focar mais em dados, Python primeiro é melhor. Se quiser focar mais em Desenvolvimento Web, Javascript é melhor.",
    "upvotes": 0,
    "downvotes": 0,
    "createdAt": "2023-03-17T04:03:17.624Z",
    "updatedAt": "2023-03-17T04:03:17.624Z",
    "creator": {
        "id": "a91ebf62-a55d-43e6-b6cd-9e1a6a2aed87",
        "username": "alicegrassi"
    },
    "postId": "3ed153dc-e908-4fe6-bc93-5e0b40a9ab26"
}

(voltar para o topo)

Get all comments votes

// Request
// GET /comments/votes
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK
[
    {
        "userId": "a3ee8f27-f424-40b0-9459-d7dca989bc4a",
        "commentId": "265164e3-47bd-4227-b3e4-40c2e2726f83",
        "vote": 1
    },
    {
        "userId": "11d71798-f86f-4fd7-a48e-720151171fd5",
        "commentId": "4099e536-2a6e-43f8-99a0-07a760b81d43",
        "vote": 1
    }
]

(voltar para o topo)

Create comment

// Request
// POST /comments
// Headers:
//   Authorization: <seu_token_de_acesso>
// body JSON
{
    "content": "Se for aprender Desenvolvimento Front-End, é Javascript na certa!",
    "postId": "3ed153dc-e908-4fe6-bc93-5e0b40a9ab26"
}
// Response
// status 201 CREATED

(voltar para o topo)

Edit Comment Vote by Id

// Request
// path params = :id
// PUT /comments/:id/vote
// Headers:
//   Authorization: <seu_token_de_acesso>
// body JSON
{
    "vote": true
}
// Response
// status 200 OK

(voltar para o topo)

Edit Comment By Id

// Request
// path params = :id
// PUT /comments/:id
// Headers:
//   Authorization: <seu_token_de_acesso>
// body JSON
{
    "content": "Python é uma linguagem cheia de recursos e muito fácil de aprender."
}
// Response
// status 200 OK

(voltar para o topo)

Delete Comment By Id

// Request
// path params = :id
// DELETE /comments/:id
// Headers:
//   Authorization: <seu_token_de_acesso>
// Response
// status 200 OK

(voltar para o topo)

Cobertura dos testes

A cobertura dos testes é obtida com o comando:

npm run test -- --collect-coverage

Com isso, obteve-se a seguinte cobertura para essa aplicação:

Cobertura dos testes

(voltar para o topo)

Contato

GithubLinkedin

(voltar para o topo)

About

Backend do projeto Labeddit, feito utilizando Node e Typescript

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published