Seja bem-vindo(a) ao meu projeto, criei essa API para fins estudantis, o objetivo era desenvolver um sistema de API com as tecnologias Node, Express, MongoDB para exercitar meu conhecimento, e também utilizar técnicas de segurança para aprender a evitar invasões em minhas aplicações.
Em seu primeiro passo você irá precisar utilizar o git para clonar este repositório.
git clone [email protected]:eriklopess/coffee-api.git
Nessa segunda etapa você precisará abrir a pasta já clonada em seu terminal e digitar o seguinte comando.
cd server
&&
npm install
O terceiro passo é muito simples, você precisará criar um arquivo chamado .env
e adicionar as seguintes variáveis.
MONGO_URI Esta variável será o link de conexão com sua base de dados mongo. JWT_SECRET Esta variável será o código secret dos tokens jwt, ou seja, a assinatura dos mesmos. JWT_EXPIRES_IN Será o tempo que os tokens jwt da aplicação levaram para expirar, ex: 1d. SECRET_KEY Outro secret key, mas dessa vez é para a criptografia de senhas e tokens da aplicação.
Bom agora só iniciar a aplicação e testar as rotas que estão documentadas logo abaixo.
Rotas com a marcação !!
necessitam de login para ser acessadas.
Rotas com a marcação §§
necessitam de login de um administrador para ser acessadas.
Propriedade | Tipo | Requirido | Default |
---|---|---|---|
name | string | sim | |
string | sim | ||
password | string | sim | |
role | string | não | user |
Será retornado apenas as propriedades _id, name e email.
Propriedade | Tipo | Requirido |
---|---|---|
string | sim | |
password | string | sim |
Será retornado as propriedades name, email, role e token.
Propriedade | Tipo |
---|---|
_id | string |
name | string |
string | |
role | string |
Propriedade | Tipo | Requirido |
---|---|---|
name | string | não |
string | não | |
password | string | não |
role | string | não |
Array
Propriedade | Tipo |
---|---|
_id | string |
name | string |
description | string |
price | number |
stock | number |
Propriedade | Tipo |
---|---|
_id | string |
name | string |
description | string |
price | number |
stock | number |
Propriedade | Tipo | Requirido |
---|---|---|
name | string | sim |
price | number | sim |
stock | number | sim |
description | string | sim |
Retorna as mesmas propriedades
Propriedade | Tipo | Requirido |
---|---|---|
_id | string | não |
name | string | não |
description | string | não |
price | number | não |
stock | number | não |
Propriedade | Tipo |
---|---|
_id | string |
code | string |
status | boolean |
expires | object |
discount | object |
usages | number |
expires: {
type: enum['date', 'quantity', 'infinity'],
value: Date | number
}
discount: {
type: enum['percentage', 'amount'],
value: number
Propriedade | Tipo |
---|---|
_id | string |
code | string |
status | boolean |
expires | object |
discount | object |
usages | number |
expires: {
type: enum['date', 'quantity', 'infinity'],
value: Date | number
}
discount: {
type: enum['percentage', 'amount'],
value: number
Propriedade | Tipo | Requirido | Default |
---|---|---|---|
code | string | sim | |
status | boolean | não | true |
expires | object | não | infinity |
discount | object | sim | |
usages | number | não | 0 |
expires: {
type: enum['date', 'quantity', 'infinity'],
value: Date | number
}
discount: {
type: enum['percentage', 'amount'],
value: number
Propriedade | Tipo |
---|---|
code | string |
status | boolean |
expires | object |
discount | object |
usages | number |
expires: {
type: enum['date', 'quantity', 'infinity'],
value: Date | number
}
discount: {
type: enum['percentage', 'amount'],
value: number
Array
Propriedade | Tipo |
---|---|
_id | string |
items | product[] |
user | string - user id |
payment | object |
createdAt | date |
payment: {
type: enum['credit', 'debit', 'pix'],
status: enum['pending', 'paid', 'refunded', 'cancelled'],
coupom?: string - coupom code,
total: number,
finalPrice: number
}
Propriedade | Tipo |
---|---|
_id | string |
items | product[] |
user | string - user id |
payment | object |
createdAt | date |
payment: {
type: enum['credit', 'debit', 'pix'],
card?: {
number: string
} ,
status: enum['pending', 'paid', 'refunded', 'cancelled'],
coupom?: string - coupom code,
total: number,
finalPrice: number
}
Propriedade | Tipo | Requirido | Default |
---|---|---|---|
items | product[] | sim | |
user | string - user id | não | id do usuário |
payment | object | sim | |
createdAt | date | não | new Date() |
payment: {
type: enum['credit', 'debit', 'pix'],
// Caso for for credit ou debit necessitará de adicionar o cartão
// Caso for pix, não precisa adicionar o cartão
card?: {
number: string,
name: string,
expiration: string, //ex: 12/25
cvv: string
} ,
status: enum['pending', 'paid', 'refunded', 'cancelled'],
coupom?: string - coupom code,
total: number,
finalPrice: number
}
Propriedade | Tipo |
---|---|
items | product[] |
user | string - user id |
payment | object |
createdAt | date |
payment: {
type: enum['credit', 'debit', 'pix'],
// Caso for for credit ou debit necessitará de adicionar o cartão
// Caso for pix, não precisa adicionar o cartão
card?: {
number: string,
name: string,
expiration: string, //ex: 12/25
cvv: string
} ,
status: enum['pending', 'paid', 'refunded', 'cancelled'],
coupom?: string - coupom code,
total: number,
finalPrice: number
}