Skip to content

Random Cofee API

Aleh Maskaliou edited this page May 18, 2019 · 12 revisions

API FAQ

Оглавление:

Документация Postman

  • по этой ссылке можно скачать программу Postman для теста запросов к api
  • а по этой ссылке находится самая свежая документация по api, которую можно подтянуть в Postman и протестировать

Важные моменты

  • При успешном выполнении запроса возвращается status = 200, statusText = "OK"
  • Любой поиск по идентификатору (кроме заданных самостоятельно) необходимо осуществлять по полю _id, который автоматически присвоен mongodb

Пример запроса

axios({
  // Указываем метод и url согласно документации
  method: 'get',
  url: 'https://forge-development.herokuapp.com/api/users/',
  headers: {
    //  Здесь передаётся токен, полученный пользователем при аутентификации на сайте
    //  Без указания данного заголовка с действующих токеном, доступ к api будет заблокирован
    Authorization: `Bearer ${token}`
  },

  //  Можно задать параметры поиска
  params: {
    
    //  Например, найти всех пользователей по определнному отделу
    department: '5cd6f6c381371d297acb2fd0'

    //  Также можно запросить только определенные поля из выборки
    //  Поля разделяются запятыми _без_ пробелов
    getFields: 'firstName,lastName,username'
  }
})
.then(data => {
  //  Получаемые данные
  //  Если наш запрос отработал без ошибки, но ничего не нашёл, то здесь вернётся пустой массив
  console.log(data);
})
.catch(err => {
  //  Если что-то пошло не так, получим объект ошибки
  console.error(err);
});

Пользователи

  • Получить список всех пользователей

    Отправляем GET запрос на /api/users/

    Ответ: массив пользователей

    axios({
      method: 'get',
      url: 'https://forge-development.herokuapp.com/api/users/',
      headers: {
        Authorization: `Bearer ${token}`
      }
    })
    .then(users => {
      console.log(users);
    })
    .catch(err => {
      console.error(err);
    });
  • Получить отфильтрованный список всех пользователей

    Отправляем GET запрос на /api/users/{{filter_query}}

    Ответ: массив пользователей, совпадающих заданным условиям

    Пример: запрашиваем всех пользователей по определенному отделу

    axios({
      method: 'get',
      url: 'https://forge-development.herokuapp.com/api/users/?department=5cd6f6c381371d297acb2fd3',
      headers: {
        Authorization: `Bearer ${token}`
      }
    })
    .then(users => {
      console.log(users);
    })
    .catch(err => {
      console.error(err);
    });
  • Получить определенные поля всех пользователей

    Отправляем GET запрос на /api/users/{{get_fields}}

    Ответ: массив объектов, состоящих из заданных свойств пользователей

    axios({
      method: 'get',
      url: 'https://forge-development.herokuapp.com/api/users/',
      headers: {
        Authorization: `Bearer ${token}`
      },
      params: {
        getFields: 'firstName,lastName,username'
      }
    })
    .then(users => {
      console.log(users);
    })
    .catch(err => {
      console.error(err);
    });
  • Получить список всех пользователей

    Отправляем GET запрос на /api/users/

    Ответ: массив пользователей

    axios({
      method: 'get',
      url: 'https://forge-development.herokuapp.com/api/users/',
      headers: {
        Authorization: `Bearer ${token}`
      }
    })
    .then(res => {
      console.log(res);
    })
    .catch(err => {
      console.error(err);
    });
  • Получить пользователя по id

    Отправляем GET запрос на /api/users/{id}
    где {id} – _id идентификатор пользователя

    Ответ: объект пользователя

    Подробнее о возможностях запроса написано документацииe

    axios({
      method: 'get',
      url: 'https://forge-development.herokuapp.com/api/users/5cdd48ea200cc7007d863294',
      headers: {
        Authorization: `Bearer ${token}`
      }
    })
    .then(res => {
      console.log(res);
    })
    .catch(err => {
      console.error(err);
    });
  • Бан пользователя

    Отправляем PUT запрос на /api/users/{{user_id}}

    Ответ: обновленный объект пользователя

    axios({
      method: "put",
      url: "https://forge-development.herokuapp.com/api/users/",
       headers: {
        Authorization: `Bearer ${token}`
      },
      data: {
        "ban": {
          "status": true,
          "expired": 1558082186482
        }
      }
    })
    .then(user => {
      console.log(user);
    })
    .catch(err => {
      console.error(err);
    });
  • Назначение пользователю отдела

    Отправляем PUT запрос на /api/users/{{user_id}}

    Ответ: обновленный объект пользователя

    axios({
      method: "put",
      url: "https://forge-development.herokuapp.com/api/users/",
       headers: {
        Authorization: `Bearer ${token}`
      },
      data: {
      	"newDepartment": "5cd6f6c381371d297acb2fd0"
      }
    })
    .then(user => {
      console.log(user);
    })
    .catch(err => {
      console.error(err);
    });

События

  • Получить список всех событий

    Отправляем GET запрос на /api/events/

    axios({
      method: 'get',
      url: 'https://forge-development.herokuapp.com/api/events/',
      headers: {
        Authorization: `Bearer ${token}`
      }
    })
    .then(res => {
      console.log(res);
    })
    .catch(err => {
      console.error(err);
    });

Отделы

  • Получить список всех отделов

    отправляем GET запрос на /api/departments/

    axios({
      method: 'get',
      url: 'https://forge-development.herokuapp.com/api/departments/',
      headers: {
        Authorization: `Bearer ${token}`
      }
    })
    .then(res => {
      console.log(res);
    })
    .catch(err => {
      console.error(err);
    });

ADMIN LOGIN

При входе админа в аккаунт отправляем логин и пароль, а также добавляем header к запросу:

POST /api/auth/admin
{
    "Content-Type": "application/json"
},
{
	"username":"sadtiger481",
	"password":"tiger"
}

RESPONSE (STATUS 200)

При успешной аутентификации возвращается токен:

{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWNkMTc1YWM0NGMyOWY2YmM3ZGJjMGExIn0sImlhdCI6MTU1NzI3NzUyMSwiZXhwIjoxNTU3MjgxMTIxfQ.g2LVARhT6k36XzUej0A6jNolneSjj3yq6lWW7IRNgzw"
}

GET ADMIN INFO AND RIGHTS

После получения токена добавляем его в header к запросу для получения информации админа:

GET /api/auth/admin
{
  "Authorization": " Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNWNkMTc1YWM0NGMyOWY2YmM3ZGJjMGExIn0sImlhdCI6MTU1NzI3NzUyMSwiZXhwIjoxNTU3MjgxMTIxfQ.g2LVARhT6k36XzUej0A6jNolneSjj3yq6lWW7IRNgzw"
}