Essa apliação foi elaborada para atuar como o back-end do projeto Adopet. Foi criada utilizando as seguintes bibliotecas:
- JSON Server
- Simula diversas funcionalidades de uma REST API de forma prática.
- JSON Server Auth
- Simula um middleware de autenticação para o JSON Server.
Base Url: https://adopet-api-cm3.herokuapp.com
method: POST
endpoint: /register
body:
se for instituição:
{
"name": "Abrigo do Norte",
"email": "[email protected]",
"password": "12345678",
"phone": "22998001100",
"type":"instituicao",
"cep":"28940000",
"moreInfo":"A instituição Abrigo do Norte foca em retirar os animais que estão morando nas ruas e prepará-los para receberem um novo lar.",
"avatar": "link_img"
}
se for usuário comum:
{
"email": "[email protected]",
"name": "João da Silva",
"password": "12345678",
"phone": "22998001100",
"type":"pessoa",
"avatar": "link_img"
}
Exemplo de respostas:
cadastrado com sucesso:
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9uZ0BlbWFpbC5jb20iLCJpYXQiOjE2NTI0NTIwMjUsImV4cCI6MTY1MjQ1NTYyNSwic3ViIjoiMiJ9.u5q65gFbs7LABD1ybR7dH74RN3gdZyfk-cW9bQxvNLA",
"user": {
"email": "[email protected]",
"name": "Abrigo do Norte",
"phone": "22998001100",
"type": "instituicao",
"cep": "28940000",
"moreInfo": "A instituição Abrigo do Norte foca em retirar os animais que estão morando nas ruas e prepará-los para receberem um novo lar.",
"avatar": "link_img",
"id": 2
}
}
se o email já tiver cadastrado:
"Email already exists"
method: POST
endpoint: /login
body:
{
"email": "[email protected]",
"password": "12345678"
}
Exemplo de respostas:
logado com sucesso:
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImpvYW9AZW1haWwuY29tIiwiaWF0IjoxNjUyNDU2OTUyLCJleHAiOjE2NTI0NjA1NTIsInN1YiI6IjEifQ.mggrTMya3uB6z-8g1pK96BszCk1R_jdF-x02oX78P04",
"user": {
"email": "[email protected]",
"name": "João da Silva",
"phone": "22998001100",
"type": "pessoa",
"avatar": "",
"id": 1
}
}
email não cadastrado:
"Cannot find user"
senha incorreta:
"Incorrect password"
method: GET
endpoint: /644/users
body: empty
Exemplo de respostas:
[
{
"email": "[email protected]",
"password": "$2a$10$MU/9zrAw1q0HfHIdpXg1sOXMQRkMerjz5Pe.EEQbEuXu9pSoJLHTO",
"name": "João da Silva",
"phone": "22998001100",
"type": "pessoa",
"avatar": "",
"id": 1
},
{
"email": "[email protected]",
"password": "$2a$10$HIryiV4gLqyClQDZ3QsrZ.iSWGMkXQoBeVhCBWE2/L7H3i5c3Zg.K",
"name": "Abrigo do Norte",
"phone": "22998001100",
"type": "instituicao",
"cep": "28940000",
"moreInfo": "A instituição Abrigo do Norte foca em retirar os animais que estão morando nas ruas e prepará-los para receberem um novo lar.",
"avatar": "",
"id": 2
}
]
method: GET
endpoint: /644/users/:id
body: empty
Exemplo de respostas:
exemplo de endpoint: /644/users/1
se o id existe:
{
"email": "[email protected]",
"password": "$2a$10$MU/9zrAw1q0HfHIdpXg1sOXMQRkMerjz5Pe.EEQbEuXu9pSoJLHTO",
"name": "João da Silva",
"phone": "22998001100",
"type": "pessoa",
"avatar": "",
"id": 1
}
se o id não existe:
{}
method: GET
endpoint: /644/users?type=:tipo
body: empty
tipos possíveis: institution, person
Exemplo de respostas:
exemplo de endpoint: /644/users?type=instituicao
se existe algum objeto com o tipo:
[
{
"email": "[email protected]",
"password": "$2a$10$HIryiV4gLqyClQDZ3QsrZ.iSWGMkXQoBeVhCBWE2/L7H3i5c3Zg.K",
"name": "Abrigo do Norte",
"phone": "22998001100",
"type": "instituicao",
"cep": "28940000",
"moreInfo": "A instituição Abrigo do Norte foca em retirar os animais que estão morando nas ruas e prepará-los para receberem um novo lar.",
"avatar": "",
"id": 2
}
]
se não existe um objeto com o tipo:
[]
method: PATCH
endpoint: /644/users/:id
authentication (bearer): token do usuário
body:
{
"name": "João da Silva Souza"
}
Exemplo de respostas:
exemplo de endpoint: .../644/users/1
se a propriedade existe no objeto:
{
"email": "[email protected]",
"password": "$2a$10$MU/9zrAw1q0HfHIdpXg1sOXMQRkMerjz5Pe.EEQbEuXu9pSoJLHTO",
"name": "João da Silva Souza",
"phone": "22998001100",
"type": "pessoa",
"avatar": "",
"id": 1
}
Nota: se a propriedade não existir, será criada uma nova propriedade com o nome e valor que foram enviados.
method: POST
endpoint: /644/animals
authentication (bearer): token do usuário pertencente ao userId
body:
{
"userId":2,
"name": "bolinha",
"species": "dog",
"sex":"m",
"size": "medium",
"img":"https://uploaddeimagens.com.br/images/003/866/643/original/cao5_1.png",
"moreInfo":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac nibh ut felis scelerisque finibus sit amet in tortor. Quisque fringilla tempus ex id mollis. Fusce eu nunc placerat, tempor quam sed, lobortis lacus. Donec interdum ipsum eros, nec sollicitudin diam pretium in. Duis sagittis sem vel ante ultricies, laoreet ornare ipsum tincidunt."
}
Exemplo de respostas:
se userId foi informado corretamente:
{
"userId": 2,
"name": "bolinha",
"species": "dog",
"sex": "m",
"size": "medium",
"img": "https://uploaddeimagens.com.br/images/003/866/643/original/cao5_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac nibh ut felis scelerisque finibus sit amet in tortor. Quisque fringilla tempus ex id mollis. Fusce eu nunc placerat, tempor quam sed, lobortis lacus. Donec interdum ipsum eros, nec sollicitudin diam pretium in. Duis sagittis sem vel ante ultricies, laoreet ornare ipsum tincidunt.",
"id": 9
}
se o userId informado for diferente do id do usuário que detem o token fornecido:
"Private resource creation: request body must have a reference to the owner id"
method: GET
endpoint: /644/animals
body: empty
Exemplo de respostas:
[
{
"userId": 1,
"name": "fiona",
"species": "dog",
"sex": "f",
"size": "small",
"img": "https://uploaddeimagens.com.br/images/003/866/666/original/cao1_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac nibh ut felis scelerisque finibus sit amet in tortor. ",
"id": 1
},
{
"userId": 1,
"name": "maxx",
"species": "dog",
"sex": "m",
"size": "medium",
"img": "https://uploaddeimagens.com.br/images/003/866/664/original/cao2_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"id": 2
},
]
method: GET
endpoint: /644/animals/:id
body: empty
Exemplo de respostas:
exemplo de endpoint: .../644/animals/1
{
"userId": 1,
"name": "fiona",
"species": "dog",
"sex": "f",
"size": "small",
"img": "https://uploaddeimagens.com.br/images/003/866/666/original/cao1_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac nibh ut felis scelerisque finibus sit amet in tortor. ",
"id": 1
}
method: GET
endpoint: /644/animals?species=:species
espécies possíveis: dog e cat
body: empty
Exemplo de respostas:
exemplo de endpoint: .../644/animals?species=dog
[
{
"userId": 1,
"name": "fiona",
"species": "dog",
"sex": "f",
"size": "small",
"img": "https://uploaddeimagens.com.br/images/003/866/666/original/cao1_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac nibh ut felis scelerisque finibus sit amet in tortor. ",
"id": 1
},
{
"userId": 1,
"name": "maxx",
"species": "dog",
"sex": "m",
"size": "medium",
"img": "https://uploaddeimagens.com.br/images/003/866/664/original/cao2_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"id": 2
},
]
method: GET
endpoint: /644/animals?userId=:id
body: empty
Exemplo de respostas:
exemplo de endpoint: .../644/animals?userId=1
[
{
"userId": 1,
"name": "fiona",
"species": "dog",
"sex": "f",
"size": "small",
"img": "https://uploaddeimagens.com.br/images/003/866/666/original/cao1_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac nibh ut felis scelerisque finibus sit amet in tortor. ",
"id": 1
},
{
"userId": 1,
"name": "maxx",
"species": "dog",
"sex": "m",
"size": "medium",
"img": "https://uploaddeimagens.com.br/images/003/866/664/original/cao2_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"id": 2
},
]
method: PATCH
endpoint: /644/animals/:id
authentication (bearer): token do usuário que cadastrou o animal
body:
{
"name":"fionna"
}
Exemplo de respostas:
exemplo de endpoint: .../644/animals/1
se a propriedade existe no objeto:
{
"userId": 1,
"name": "fionna",
"species": "dog",
"sex": "f",
"size": "small",
"img": "https://uploaddeimagens.com.br/images/003/866/666/original/cao1_1.png",
"moreInfo": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac nibh ut felis scelerisque finibus sit amet in tortor. ",
"id": 1
},
Nota: se a propriedade não existir, será criada uma nova propriedade com o nome e valor que foram enviados.
method: DELETE
endpoint: /644/animals/:id
authentication (bearer): token do usuário que cadastrou o animal
body: empty
Exemplo de respostas:
exemplo de endpoint: ...644/animals/1
se o id e token estiverem corretos:
{}
se o id não existir:
"Cannot read properties of undefined (reading 'userId')"
se tentar deletar o animal criado por outro usuário:
"Private resource access: entity must have a reference to the owner id"