Skip to content
Yuriy Samsonov edited this page Dec 31, 2016 · 12 revisions

Работа с api

Авторизация (получения токена)

  1. Берем clientId:clientSecret шифруем это ипользую алгоритм base64

    Как это сделать в js:

    var headerKey = btoa('web_app:secret_key');
  2. Полученный headerKey нужно добавить в заголовок запроса

    key = Authorization
    value = headerKey

  3. Затем нужно отправить следующий запрос

POST localhost/oauth/token?username=yura@gmail.com&password=1234&scope=read write&grant_type=password

Получим следующий ответ:

{
  "access_token": "b67087dd-308c-451c-837d-4441a13e05f5",
  "token_type": "bearer",
  "refresh_token": "1fcb1b96-b224-494f-9670-ca45710eb15d",
  "expires_in": 43199,
  "scope": "read write",
  "account_id": "9bbf6fb8-14b1-4f30-9080-c75b5772d161"
}

Пример запросов с использованием токена

Для выполнения запросов к api, к которым нужна авторизация, мы должны использовать access_token. Для этого нужно:

  1. Сначала получить access_token(как это делать см. здесь)

  2. Установить заголовок запроса

    key = Authorization
    value = Bearer access_token

  3. Выполнить запрос и радоваться

Работа с аккаунтами

Регистрация нового аккаунта

POST /api/accounts

Передаем параметры в JSON:

{
  "email":"yuriy.samsonov96@gmail.com", // required
  "login":"academeg", // required
  "password":"1234", // required
  "name":"Юрий",
  "surname":"Самсонов"
}

доступно: всем

Редактирование аккаунта

PUT /api/accounts/{id}

Передаем параметры в JSON:

{
  "login":"academeg", // required
  "name":"Юрий",
  "surname":"Самсонов"
}

Можем редактировать только login, name, surname, если они будут пустыми, то они затрутся в базе.
Пользователь может редактировать только свой аккаунт

доступно: только авторизованному пользователю

Удаление профиля

DELETE /api/accounts/{id}

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

доступно: только авторизованному пользователю

Получение информации об аккаунте

GET /api/accounts/{id}

доступно: всем

Получение информации о всех аккаунтах постранично

GET /api/accounts/list?page={page}&limit={limit}

page необязательный параметр, изначально равен 0
limit необязательный параметр, изначально равен 20

доступно: всем

Работа с аватарками

Установка аватара

POST /api/avatars

Параметры:
image передаем изображение

доступно: только авторизованному пользователю

Удаление аватара

DELETE /api/avatars

доступно: только авторизованному пользователю

Получение аватара

GET /api/avatars/{id}

доступно: всем

Получение файла аватара

GET /api/avatars/file/{name}

name thumbnailPath или originalPath

доступно: всем

Работа с тегами

Создание нового тега

POST /api/tags

Передаем параметры в JSON:

{
  "value": "фотки" // required
}

доступно: только авторизованному пользователю

Редактирование тега

PUT /api/tags/{id}

Передаем параметры в JSON:

{
  "value": "фотки" // required
}

доступно: только админу или модератору

Удаление тега

DELETE /api/tags/{id}

доступно: только админу или модератору

Получение тега

GET /api/tags/{id}

доступно: всем

Получение всех тегов постранично

GET /api/tags?page={page}&limit={limit}

page необязательный параметр, изначально равен 0
limit необязательный параметр, изначально равен 20

доступно: всем

Работа со статьями

Создание новой статьи

POST /api/articles

Передаем параметры в JSON:

{
  "title":"Тайтл", // required
  "text":"Текст", // required
  "status":"DRAFT", // если пришло пустое, то статься будет опубликована
  "tags": [
    {
      "id":"fa627258-2b24-4a2e-b437-f2ec6977c95b" // required
    }
  ],
  "images": [
    {
      "id":"82ffdb43-dc83-449a-9f11-cabefb377cb2" // required
    }
  ]
}

Поле status имеет следующие состояния:

  • PUBLISHED - опубликована (видна всем)
  • DRAFT - черновик (видит только автор)
  • LOCKED - заблокирована (видит автор, админ, модератор); это состояние устанавливается только админом/модератором

доступно: только авторизованным пользователям

Редактирование статьи

PUT /api/articles/{id}

Передаем параметры в JSON:

{
  "title":"Тайтл", // required
  "text":"Текст", // required
  "status":"PUBLISHED", // если пришло пустое, то статься будет опубликована
  "tags": [
    {
      "id":"fa627258-2b24-4a2e-b437-f2ec6977c95b" // required
    }
  ],
  "images": [
    {
      "id":"82ffdb43-dc83-449a-9f11-cabefb377cb2" // required
    }
  ]
}

images при передачи пустого массива, изображения не удалятся, если передается не пустой массив, то эти изображения добавятся к статье
tags если будет пустой массив, то теги удалятся

доступно: только автору статьи

Удаление статьи

DELETE /api/articles/{id}

доступно: только автору статьи, модератору или админу

Получение статьи

GET /api/articles/{id}

доступно: всем

Получение всех статей постранично

GET /api/articles?page={page}&limit={limit}

page необязательный параметр, изначально равен 0
limit необязательный параметр, изначально равен 20

доступно: всем

Получение всех статей постранично

GET /api/articles?page={page}&limit={limit}

page необязательный параметр, изначально равен 0
limit необязательный параметр, изначально равен 20

доступно: всем

Блокирование статьи

GET /api/articles/{id}/lock

доступно: только админу или модератору

Разблокирование статьи

GET /api/articles/{id}/unlock

доступно: только админу или модератору

Работа с изображениями в статьях

Загрузка изображения

POST /api/images

Параметры:
image передаем изображение

доступно: только авторизованному пользователю

Удаление аватара

DELETE /api/images/{id}

доступно: только авторизованному пользователю

Получение изображения

GET /api/images/{id}

доступно: всем

Получение файла изображения

GET /api/images/file/{name}

name thumbnailPath или originalPath

доступно: всем

Clone this wiki locally