Api for task "RS Clone".
- Use
node 14.x
or higher. - Clone this repo:
$ git clone https://github.com/igormotorin/json-server-api.git
. - Go to downloaded folder:
$ cd json-server-api
. - Install dependencies:
$ npm install
. - Start server:
$ npm start
. - Now you can send requests to the address:
http://127.0.0.1:3000
.
-
Чтобы начать работу с сервером нужно зарегестрировать пользователя
Делаем запрос: POST http://localhost:3000/register
в Body запроса пишем JSON:
{ "email": "olivier2@mail.com", // свои данные "password": "bestPassw0rd" // свои данные }
Сервер в ответе пришлет id пользователя и accessToken (как в примере ниже)
Response:
{ "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDM3MTE4LCJleHAiOjE2NzU0NDA3MTgsInN1YiI6IjQifQ.c6uMSTy8dwWRJzmH1g-sCXsXxxyHHoFQcQpdN7ovXf8", "user": { "email": "olivier1@mail.com", "id": 4 } }
-
Дальше все последующие запросы делаем с accessToken, для этого необходимо в Headers запросов в поле Authorization установить тип авторизации Bearer и токен полученный при регистрации.
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXJAbWFpbC5jb20iLCJpYXQiOjE2NzU0MzU5NjAsImV4cCI6MTY3NTQzOTU2MCwic3ViIjoiMyJ9.wkzZjoRZXzrMYjVFBdwuZwg_hxPGmyAEIr7rPi6cyZw
-
Токен живет 1 час, по истечении часа необходимо получить новый токен. Для этого выполнить вход в систему Login.
Делаем запрос: POST http://localhost:3000/login
в Body запроса пишем JSON:
{ "email": "olivier12@mail.com", "password": "bestPassw0rd11" }
Сервер в ответе пришлет id пользователя и обновленный accessToken
Response:
{ "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDM3Njk3LCJleHAiOjE2NzU0NDEyOTcsInN1YiI6IjQifQ.Ca5h8xNzmfJzyiSxCayZzKN5ZxOlJm68Ib1uug720co", "user": { "email": "olivier1@mail.com", "id": 4 } }
-
User
-
Settings
-
Transactions
Register a new user.
-
URL
/register
-
Method:
POST
-
Headers:
'Content-Type': 'application/json'
-
URL Params
None
-
Query Params
None
-
Data Params
{ email: string, password: string }
-
Success Response:
- Code: 201 CREATED
Content:{ "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXJAbWFpbC5jb20iLCJpYXQiOjE2NzU0MDAyMDEsImV4cCI6MTY3NTQwMzgwMSwic3ViIjoiMyJ9.rb6HiOz3JLsY8JUNovCE6vTjtBBXBQiC80Ru7_ADcl4", "user": { "email": "olivier@mail.com", "id": 3 } }
- Code: 201 CREATED
-
Error Response:
-
Code: 400 Bad Request
Content:"Email and password are required"
-
Code: 400 Bad Request
Content:"Email already exists"
-
-
Notes:
None
Login user.
-
URL
/login
-
Method:
POST
-
Headers:
'Content-Type': 'application/json'
-
URL Params
None
-
Query Params
None
-
Data Params
{ email: string, password: string }
-
Success Response:
- Code: 200 OK
Content:{ "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXJAbWFpbC5jb20iLCJpYXQiOjE2NzU0MDAyMDEsImV4cCI6MTY3NTQwMzgwMSwic3ViIjoiMyJ9.rb6HiOz3JLsY8JUNovCE6vTjtBBXBQiC80Ru7_ADcl4", "user": { "email": "olivier@mail.com", "id": 3 } }
- Code: 200 OK
-
Error Response:
-
Code: 400 Bad Request
Content:"Cannot find user"
-
Code: 400 Bad Request
Content:"Incorrect password"
-
Code: 400 Bad Request
Content:"Email and password are required"
-
-
Notes:
None
Get user data
-
URL
/users/:id
-
Method:
GET
-
Headers:
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
None
-
Success Response:
- Code: 200 OK
Content:{ "email": "olivier12@mail.com", "password": "$2a$10$dvRIbUcWuFkuY/gJsi5fAORBJ9DsHmSOLawKzT4Rzf7C6mon/cwWe", "id": 1 }
- Code: 200 OK
-
Error Response:
- Code: 403 Forbidden
Content:"Private resource replacement: request body must have a reference to the owner id"
- Code: 403 Forbidden
-
Notes:
None
Update user data
-
URL
/users/:id
-
Method:
PUT
-
Headers:
'Content-Type': 'application/json'
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
{ email: string, password: string }
-
Success Response:
- Code: 200 OK
Content:{ "email": "olivier12@mail.com", "password": "$2a$10$dvRIbUcWuFkuY/gJsi5fAORBJ9DsHmSOLawKzT4Rzf7C6mon/cwWe", "id": 1 }
- Code: 200 OK
-
Error Response:
- Code: 403 Forbidden
Content:"Private resource replacement: request body must have a reference to the owner id"
- Code: 403 Forbidden
-
Notes:
None
Delete user
-
URL
/users/:id
-
Method:
DELETE
-
Headers:
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
None
-
Success Response:
- Code: 200 OK
Content:{}
- Code: 200 OK
-
Error Response:
- Code: 401 Unauthorized
Content:"Cannot read properties of undefined (reading 'id')"
- Code: 401 Unauthorized
-
Notes:
None
Set settings user (id = user id).
-
URL
/users/:id/settings
-
Method:
POST
-
Headers:
'Content-Type': 'application/json'
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
{ "lang": "en", "theme": "black", "currency": "usd", "userId": 3 }
-
Success Response:
- Code: 201 Created
Content:{ "lang": "en", "theme": "black", "currency": "usd", "userId": 3, "id": 7 }
- Code: 201 Created
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None
Get all settings user (id = user id).
-
URL
/user/:id/settings
-
Method:
GET
-
Headers:
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
none
-
Success Response:
- Code: 200 OK
Content:[ { "lang": "en", "theme": "dddd", "currency": "usd", "userId": "3", "id": 6 }, { "lang": "en", "theme": "rrrrr", "currency": "usd", "userId": 3, "id": 7 }, { "lang": "en", "theme": "rrrrr", "currency": "usd", "userId": 3, "id": 8 } ]
- Code: 200 OK
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None
Update settings user (id = setting id).
-
URL
/settings/:id
-
Method:
PUT
-
Headers:
'Content-Type': 'application/json'
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
{ "lang": "en", "theme": "black", "currency": "usd", "userId": 3 }
-
Success Response:
- Code: 200 OK
Content:{ "lang": "en", "theme": "black", "currency": "usd", "userId": 3, "id": 7 }
- Code: 200 OK
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None
Delete settings user (id = setting id).
-
URL
/settings/:id
-
Method:
DELETE
-
Headers:
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
None
-
Success Response:
- Code: 200 OK
Content:{}
- Code: 200 OK
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None
Set transactions user (id = user id).
-
URL
/users/:id/transactions
-
Method:
POST
-
Headers:
'Content-Type': 'application/json'
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
{ "type": "expense", "category": "mobile", "subcategory": "tele2", "description": "апрель", "data": "1", "time": "1", "sum": 100, "userId": 3 }
-
Success Response:
- Code: 201 Created
Content:{ "type": "expense", "category": "mobile", "subcategory": "tele2", "description": "апрель", "data": "1", "time": "1", "sum": 100, "userId": "3", "id": 3 }
- Code: 201 Created
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None
Get all transactions user (id = user id).
-
URL
/user/:id/transactions
-
Method:
GET
-
Headers:
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
none
-
Success Response:
- Code: 200 OK
Content:[ { "type": "expense", "category": "mobile", "subcategory": "tele2", "description": "апрель", "data": "1", "time": "1", "sum": 100, "userId": "3", "id": 3 } ]
- Code: 200 OK
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None
Update transactions user (id = transaction id).
-
URL
/transactions/:id
-
Method:
PUT
-
Headers:
'Content-Type': 'application/json'
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
{ "type": "expense111", "category": "mobile", "subcategory": "tele2", "description": "апрель", "data": "1", "time": "1", "sum": 100, "userId": 3 }
-
Success Response:
- Code: 200 OK
Content:{ "type": "expense111", "category": "mobile", "subcategory": "tele2", "description": "апрель", "data": "1", "time": "1", "sum": 100, "userId": 3, "id": 3 }
- Code: 200 OK
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None
Delete transactions user (id = transactions id).
-
URL
/transactions/:id
-
Method:
DELETE
-
Headers:
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXIxQG1haWwuY29tIiwiaWF0IjoxNjc1NDAyMjM1LCJleHAiOjE2NzU0MDU4MzUsInN1YiI6IjEifQ.V_lNh4EXi2DtVcOD7UDrZblxFFmYeoEufxshsLIJ_ik'
-
URL Params
Required:
id=[integer]
-
Query Params
None
-
Data Params
None
-
Success Response:
- Code: 200 OK
Content:{}
- Code: 200 OK
-
Error Response:
-
Code: 403 Forbidden
Content:"Private resource creation: request body must have a reference to the owner id"
-
Code: 401 Unauthorized
Content:"invalid token"
-
-
Notes:
None