- Este é um projeto básico de Backend, utilizando Typescript, MySQL, além das bibliotecas knexJs e expressJs, desenvolvido para atender aos modelos REST API.
- O projeto consiste em simular a metodologia CRUD na estruturação de Sistema de Feeds de Receitas,criando e acessando informações de usuários, receitas, relação seguidores e seguidos, sendo criado endpoints
GET,POST,PUTeDELETEpara alimentar as demandas.
LINK DA DOCUMENTAÇÃO NO POSTMAN: https://documenter.getpostman.com/view/15825773/Tzz8sHfv
https://cookenu-projeto.herokuapp.com/feed
- Este endpoint retorna todas as receitas dos usuários seguidos pelo usuário logado.
- São exibidos das receitas seus
id,title,description,createdAt,creatorIde respectivoscreatorNamecomo resposta. - As receitas são exibidas de forma ordenada decrescente por data de criação, mostrando as mais recentes no topo e as mais antigas no fundo.
No Content
Authorization: token
No content
{
"recipes": [
{
"id": "59db9df2-1e68-4102-8d9e-dac43bb5271b",
"title": "Breno 2",
"description": "descrição breno",
"createdAt": "12/08/2021",
"creatorId": "f4090135-f9bf-429b-ad43-7c1ffbaa9eec",
"creatorName": "Breno"
},
{
"id": "c922e1d4-b753-4f5f-ba38-1faa9bb84294",
"title": "Breno 1",
"description": "descrição breno",
"createdAt": "12/08/2021",
"creatorId": "f4090135-f9bf-429b-ad43-7c1ffbaa9eec",
"creatorName": "Breno"
}
]
}
- Não há restrições.
https://cookenu-projeto.herokuapp.com/user/profile
- Este endpoint retorna informações não-sensíveis do usuário logado.
- São exibidos do usuário seus
id,namee respectivosemailcomo resposta.
No Content
Authorization: token
No Content
{
"userProfile": {
"id": "959ee8f2-6542-4281-b0b4-bc1ff65e0956",
"name": "Ana",
"email": "ana@labenu.com"
}
}
- Não há restrições.
https://cookenu-projeto.herokuapp.com/user/:id
- Este endpoint retorna informações não-sensíveis de usuário pelo seu id.
- A busca é feita pela query param
id, que corresponde ao id do usuário de interesse. - São exibidos do usuário seus
id,namee respectivosemailcomo resposta.
No Content
Authorization: token
- id 3b5bb57a-ee0b-4961-8142-a4ee6c89ace9
{
"userProfile": {
"id": "3b5bb57a-ee0b-4961-8142-a4ee6c89ace9",
"name": "Daniel",
"email": "daniel@labenu.com"
}
}
- Não há restrições.
https://cookenu-projeto.herokuapp.com/recipe/:id
- Este endpoint retorna informações de uma receita pela sua id.
- A busca é feita através do query param
id, que corresponde ao id da receita de interesse. - São exibidos da receita seus
id,title,descriptione respectivoscreatedAtcomo resposta.
No Content
Authorization: token
- id b85bdf54-e841-4c37-84a2-ccef4714c6b7
{
"recipe": {
"id": "b85bdf54-e841-4c37-84a2-ccef4714c6b7",
"title": "Ana 2",
"description": "descrição ana",
"createdAt": "12/08/2021"
}
}
- Não há restrições.
https://cookenu-projeto.herokuapp.com/signup
- Este endpoint cadastra um novo usuário no sistema.
{
"name": "NomeDoUsuario",
"email": "emaildousuario@email.com",
"password": "123456",
"role": "normal"
}
Content-Type: application/json
No Content
{
"message": "User created successfully!",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImRkOTk5OWY2LTgzMTktNDk0OS1iNDNjLTMxM2JlODkxNDM5YSIsInJvbGUiOiJOT1JNQUwiLCJpYXQiOjE2MjkxMzU1NjUsImV4cCI6MTYyOTEzOTE2NX0.1ix35lyoolgeu_18KTebNBHA49BkslMjNL_5Cqjs4Zo"
}
name,emailepasswordsão campos obrigatórios.emaildeve ser um campo único.emaildeve ser inserido no formatoxxxx@yyyyy.zzz.www.- Todos os campos são da forma
string type. roleé um campo de preenchimento opcional, que corresponde a somente dois possíveis valores:ADMINouNORMAL. Caso nada seja informado, o campo não exista ou seja fornecido valor diferente deADMIN, o campo gerará como padrão o valorNORMAL.roleé não sensível àcapital letterse, portantoADMINé igual a escrever, por exemplo,aDmiN,AdMIN, etc.
https://cookenu-projeto.herokuapp.com/login
- Este endpoint loga um usuário existente no sistema.
{
"email": "emaildousuario@email.com",
"password": "123456"
}
Content-Type: application/json
No Content
{
"message": "Login has been successfully!",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImRkOTk5OWY2LTgzMTktNDk0OS1iNDNjLTMxM2JlODkxNDM5YSIsInJvbGUiOiJOT1JNQUwiLCJpYXQiOjE2MjkxMzYwMzEsImV4cCI6MTYyOTEzOTYzMX0.GTFPJWW9jFgQAWpBa15onw9zcbGj6ymadpkqhecGBuA"
}
emailepasswordsão campos obrigatórios.- Todos os campos são da forma
string type.
https://cookenu-projeto.herokuapp.com/recipe
- Este endpoint cria uma nova receita de um usuário logado.
{
"title": "Nova receita",
"description": "descrição de nova receita"
}
Content-Type: application/json
Authorization: token
No Content
{
"message": "Recipe created successfully!"
}
titleedescriptionsão campos obrigatórios.- Todos os campos são da forma
string type.
https://cookenu-projeto.herokuapp.com/user/follow
- Este endpoint possibilita ao usuário logado seguir outro usuário do sistema pelo seu
id.
{
"userToFollowId": "f4090135-f9bf-429b-ad43-7c1ffbaa9eec"
}
Content-Type: application/json
Authorization: token
No Content
{
"message": "Followed successfully!"
}
userToFollowIdé um campo obrigatório.- O valor de
userToFollowIdnão deve ser o mesmo do usuário logado, pois um usuário não pode seguir a si mesmo. - Todos os campos são da forma
string type.
https://cookenu-projeto.herokuapp.com/user/unfollow
- Este endpoint possibilita ao usuário logado remover seguida a outro usuário do sistema pelo seu `id.
{
"userToUnFollowId": "f4090135-f9bf-429b-ad43-7c1ffbaa9eec"
}
Content-Type: application/json
Authorization: token
No Content
{
"message": "Unfollowed successfully"
}
userToUnfollowIdé um campo obrigatório.- O valor de
userToUnfollowIdnão deve ser o mesmo do usuário logado, pois um usuário não pode seguir a si mesmo. - Todos os campos são da forma
string type.
https://cookenu-projeto.herokuapp.com/recipe/edit/:recipeId
- Este endpoint edita uma receita no sistema.
{
"title": "novo titulo",
"description": "nova descrição"
}
Content-Type: application/json
Authorization: token
- recipeId 90c161a8-a9d4-4e3a-a816-d2c452fc41d3
{
"message": "Recipe modified successfully!"
}
- Ao menos
titleoudescriptiondeve ser passado como um campo obrigatório. - Caso o
roledo usuário possua valorNORMAL, o usuário só poderá alterar receitas de sua própria criação. Caso seurolepossua valorADMIN, este poderá alterar qualquer receita no sistema. - Todos os campos são da forma
string type.
https://cookenu-projeto.herokuapp.com/user/tempPass
- Este endpoint possibilita ao usuário receber uma nova senha temporária pelo seu
emailcadastrado.
{
"email": "emailcadastrado@email.com"
}
Content-Type: application/json
No Content
{
"message": "New temporary password created and send to user email!"
}
emailé um campo obrigatório.- O valor de
emailjá deve ser cadastrado no sistema.
https://cookenu-projeto.herokuapp.com/recipe/:recipeId
- Este endpoint possibilita ao usuário logado remover uma receita do sistema pelo seu
id.
No content
Authorization: token
- recipeId 2,996515
{
"message": "Recipe deleted successfully!"
}
- Caso o usuário tenha
rolede valorNORMAL, este só poderá remover receitas de sua própria criação. Caso tenharolede valorADMIN, este poderá deletar qualquer receita presente no sistema.
https://cookenu-projeto.herokuapp.com/user/:userId
- Este endpoint possibilita ao usuário logado remover uma conta de usuário do sistema.
No content
Authorization: token
- userId 1.2654665
{
"message": "User account deleted successfully!"
}
- Caso o usuário tenha
rolede valorNORMAL, este só poderá remover sua própria conta. Caso tenharolede valorADMIN, este poderá deletar qualquer outra conta de usuário presente no sistema. - Um usuário
ADMINnão pode remover sua própria conta, sendo necessário que outroADMINo remova do sistema.