https://e-commerce-project-api.herokuapp.com
Para rodar localmente é necessário ter um servidor de banco de dados Postgres. Crie um database com o nome "e-commerce-api". O acesso a esse banco de dados deve ser feito com username: postgres, password:postgres, port:5432
Após criar o banco de dados devemos rodar as migrations para crias as tabelas. Para isso rode comando no terminal dentro da pasta do projeto:
npm run migration:run
npm run start
Localmente a API irá rodar na seguinte URL base:
http://localhost:3333
Aqui serão descritas as rotas da API com exemplos.
Abaixo temos um exmplo de utilização da rota para cadastrar uma role de aluno (Student).
POST /roles
REQUEST
{
"name":"Student"
}
Em seguida temos a resposta.
POST /roles
RESPONSE 201
{
"name": "Student",
"id": "9bde2d8e-684d-4da0-99c4-09529989f6bd"
}
Em seguida temos o exemplo de resposta para a requisição de todas as roles
GET /roles
RESPONSE 200
[
{
"id": "5be3f402-0c14-4ece-90a1-121bebae2a00",
"name": "Administrator"
},
{
"id": "9bde2d8e-684d-4da0-99c4-09529989f6bd",
"name": "Student"
}
]
POST /users
REQUEST
{
"name":"Suellen",
"last_name":"Camargo",
"birthday_date":"16/08/1998",
"gender_identity":"Cisgênero",
"sexual_orientation":"Bissexual",
"race":"Caucasiano",
"email":"suellen.priscilla.camargo@gmail.com",
"password":"123456",
"role_id":"9bde2d8e-684d-4da0-99c4-09529989f6bd"
}
Em seguida temos a resposta.
POST /users
RESPONSE 201
{
"name": "Suellen",
"last_name": "Camargo",
"gender_identity": "Cisgênero",
"sexual_orientation": "Bissexual",
"race": "Caucasiano",
"birthday_date": "16/08/1998",
"email": "suellen.priscilla.camargo@gmail.com",
"password": "123456",
"role_id": "9bde2d8e-684d-4da0-99c4-09529989f6bd",
"id": "f4109192-70b8-4b90-9f15-a93957283339"
}
Abaixo temos um exemplo de requisição de login.
POST /login
REQUEST
{
"email":"suellen.priscilla.camargo@gmail.com",
"password":"123456"
}
Em seguida temos a resposta
POST /login
RESPONSE 200
{
"user": {
"id": "f4109192-70b8-4b90-9f15-a93957283339",
"name": "Suellen",
"last_name": "Camargo",
"birthday_date": "16/08/1998",
"gender_identity": "Cisgênero",
"sexual_orientation": "Bissexual",
"race": "Caucasiano",
"email": "suellen.priscilla.camargo@gmail.com",
"role_id": "9bde2d8e-684d-4da0-99c4-09529989f6bd",
"role": {
"id": "9bde2d8e-684d-4da0-99c4-09529989f6bd",
"name": "Student"
}
},
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY0MTA5MTkyLTcwYjgtNGI5MC05ZjE1LWE5Mzk1NzI4MzMzOSIsInJvbGUiOnsiaWQiOiI5YmRlMmQ4ZS02ODRkLTRkYTAtOTljNC0wOTUyOTk4OWY2YmQiLCJuYW1lIjoiU3R1ZGVudCJ9LCJpYXQiOjE2NTU5OTE0Mjl9.n3bECh1gGVz6zXJCFclT2MwfqTyl_PSO-ZVo_THov1o"
}
Abaixo temos um exemplo de requisição para cadastro de curso
POST /courses
REQUEST
{
"course_name":"Javascript",
"teacher_name": "Suellen Camargo",
"description": "O curso mais avançado de Javascript",
"duration": "6 meses",
"price": 10000,
"photo":"https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/800px-Unofficial_JavaScript_logo_2.svg.png"
}
Em seguida temos a resposta.
POST /courses
REQUEST 201
{
"course_name": "Javascript",
"teacher_name": "Suellen Camargo",
"description": "O curso mais avançado de Javascript",
"duration": "6 meses",
"price": 10000,
"photo": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/800px-Unofficial_JavaScript_logo_2.svg.png",
"id": "93624a03-1a4b-4d65-b2f2-2d814400fe62"
}
Abaixo temos um exemplo de resposta para requisição de listagem de cursos
GET /courses
RESPONSE 200
[
{
"id": "93624a03-1a4b-4d65-b2f2-2d814400fe62",
"course_name": "Javascript",
"price": 10000,
"duration": "6 meses",
"teacher_name": "Suellen Camargo",
"description": "O curso mais avançado de Javascript",
"photo": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/800px-Unofficial_JavaScript_logo_2.svg.png"
},
{
"id": "a45ec31f-3c89-4986-a544-103a55ffd275",
"course_name": "NodeJS",
"price": 5000,
"duration": "1 ano",
"teacher_name": "Mayara",
"description": "Curso básico de NodeJS",
"photo": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/800px-Unofficial_JavaScript_logo_2.svg.png"
}
]
Na requisição a seguir podemos registrar um ou mais cursos ao usuário. Devemos informar o id do usuário e os ids dos cursos a serem registrados ao usuário. Veja um exemplo do registro de 2 cursos.
POST /users/courses
REQUEST
{
"user_id":"f4109192-70b8-4b90-9f15-a93957283339",
"courses_id":["93624a03-1a4b-4d65-b2f2-2d814400fe62", "a45ec31f-3c89-4986-a544-103a55ffd275"]
}
Em seguida temos a resposta
POST /users/courses
RESPONSE 201
{
"id": "f4109192-70b8-4b90-9f15-a93957283339",
"name": "Suellen",
"last_name": "Camargo",
"birthday_date": "16/08/1998",
"gender_identity": "Cisgênero",
"sexual_orientation": "Bissexual",
"race": "Caucasiano",
"email": "suellen.priscilla.camargo@gmail.com",
"password": "123456",
"role_id": "9bde2d8e-684d-4da0-99c4-09529989f6bd",
"courses": [
{
"id": "93624a03-1a4b-4d65-b2f2-2d814400fe62",
"course_name": "Javascript",
"price": 10000,
"duration": "6 meses",
"teacher_name": "Suellen Camargo",
"description": "O curso mais avançado de Javascript",
"photo": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/800px-Unofficial_JavaScript_logo_2.svg.png"
},
{
"id": "a45ec31f-3c89-4986-a544-103a55ffd275",
"course_name": "NodeJS",
"price": 5000,
"duration": "1 ano",
"teacher_name": "Mayara",
"description": "Curso básico de NodeJS",
"photo": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/800px-Unofficial_JavaScript_logo_2.svg.png"
}
]
}
Para deletar o curso de um usuário devemos informar o id do usuário e o id do curso a ser deletado. Veja um exemplo.
PATCH /users/courses
REQUEST
{
"user_id":"f4109192-70b8-4b90-9f15-a93957283339",
"course_id":"93624a03-1a4b-4d65-b2f2-2d814400fe62"
}
Em seguida temos a seguinte resposta.
PATCH /users/courses
RESPONSE 200
{
"message": "Curso Javascript deletado do usuário Suellen"
}
Para pegar as informações de um usuário devemos informar o id do usuário na requisição da URL. Veja um exemplo de uma resposta da requisição.
GET /users/f4109192-70b8-4b90-9f15-a93957283339
RESPONSE 200
{
"id": "f4109192-70b8-4b90-9f15-a93957283339",
"name": "Suellen",
"last_name": "Camargo",
"birthday_date": "16/08/1998",
"gender_identity": "Cisgênero",
"sexual_orientation": "Bissexual",
"race": "Caucasiano",
"email": "suellen.priscilla.camargo@gmail.com",
"password": "123456",
"role_id": "9bde2d8e-684d-4da0-99c4-09529989f6bd",
"courses": [
{
"id": "a45ec31f-3c89-4986-a544-103a55ffd275",
"course_name": "NodeJS",
"price": 5000,
"duration": "1 ano",
"teacher_name": "Mayara",
"description": "Curso básico de NodeJS",
"photo": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/800px-Unofficial_JavaScript_logo_2.svg.png"
}
]
}