Skip to content

IgorMotorin/json-server-api

Repository files navigation

JSON-server-api

Api for task "RS Clone".

Setup and Running

  • 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.

Usage

  1. Чтобы начать работу с сервером нужно зарегестрировать пользователя

    Делаем запрос: 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
            }
        }
  2. Дальше все последующие запросы делаем с accessToken, для этого необходимо в Headers запросов в поле Authorization установить тип авторизации Bearer и токен полученный при регистрации.

    	Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im9saXZpZXJAbWFpbC5jb20iLCJpYXQiOjE2NzU0MzU5NjAsImV4cCI6MTY3NTQzOTU2MCwic3ViIjoiMyJ9.wkzZjoRZXzrMYjVFBdwuZwg_hxPGmyAEIr7rPi6cyZw
  3. Токен живет 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
            }
        }

Register User

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
          }
      }
  • Error Response:

    • Code: 400 Bad Request
      Content: "Email and password are required"

    • Code: 400 Bad Request
      Content: "Email already exists"

  • Notes:

    None

Login User

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
          }
      }
  • 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

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
       }
  • Error Response:

    • Code: 403 Forbidden
      Content: "Private resource replacement: request body must have a reference to the owner id"
  • Notes:

    None

Update User

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
       }
  • Error Response:

    • Code: 403 Forbidden
      Content: "Private resource replacement: request body must have a reference to the owner id"
  • Notes:

    None

Delete User

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:
        {}
  • Error Response:

    • Code: 401 Unauthorized
      Content: "Cannot read properties of undefined (reading 'id')"
  • Notes:

    None

Set settings user

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
      }
  • 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

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
      }
      ]
  • 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

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
      }
  • 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

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:
        {}
  • 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

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
      }
  • 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

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
          }
      ]
  • 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

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
      }
  • 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

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:
        {}
  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published