/RubyApi

Primary LanguageRuby

Clucky_backend_ruby

Используемые заголовки:

-- заголовки в запросе
Authorization: Bearer 
content-type: application/json; charset=utf-8

-- заголовки в ответе
content-type: application/json; charset=utf-8

Коды ответов:
-- для всех типов запросов;

401 - не авторизован
404 - данные не найдены
400 - плохой запрос (неправильный формат данных, преданны не все данные и т.п.)
500 - внутренняя ошибка сервера (если произошло исключение или ошибка

-- GET
200 - запрос выполнен успешно (возвращается json данные)

-- POST
201 - ресурс создан успешно
-- PUT
200 - запрос выполнена успешно

-- DELETE
200 - запрос выполнена успешно

Все ответы возвращаются в объекте: 

{
    status: http статус, дублирует статус указанный в заголовке ответа.
    message: описание операции
    result: массив запрошенных объектов или null
    error: {
       code: код ошибки
       message: сообщение ошибки
    } или null
}


-- API.auth
POST /api/auth/login - возвращает JWT, 
принимает {
  "login":"имя или email пользователя", (обязательный) 
  "password":"пароль пользователя" (обязательный)
}
POST /api/auth/logout
не принимает параметры, ожидает access_token
POST /api/auth/refresh
не принимает параметры, ожидает refresh_token
POST /api/auth/register
принимает {
  "login": "имя пользователя", (обязательный) 
  "password": "пароль пользователя" (обязательный)
  "email": "email пользователя" (обязательный)
}

-- API.answers, ожидает access_token 
GET /api/answers
GET /api/answers/:id
GET /api/answers/:id/question
GET /api/ansver/:id/votes
GET /api/answers/:id/user
POST /api/answers
принимает { 
  "answer":"ответ на вопрос", (обязательный) 
  "user_id": "ид пользователя", (не обязателен, извлекается из JWT если не указан)
  "question_id": "ид вопроса"
}
PUT /api/answers/:id
DELETE /api/answers/:id

-- API.categories, ожидает access_token
GET /api/categories
GET /api/categories/:id
GET /api/categories/:id/questions
GET /api/categories/:id/answers
POST /api/categories
принимает {"name":"название категории"} (обязательный)
POST /api/categories/:id/questions/:qid/set (нет параметров, назначает категорию для вопроса)
POST /api/categories/:id/questions/:qid/del (нет параметров, удаляет назначенную категорию)
PUT /api/categories/:id
DELETE /api/categories/:id

-- API.questions, ожидает access_token
GET /api/questions
GET /api/questions/:id
GET /api/questions/:id/answers
GET /api/questions/:id/tags
GET /api/questions/:id/votes
GET /api/questions/:id/category
GET /api/questions/:id/user
POST /api/questions
принимает {
  "subject": "тема вопроса", (обязательный)
  "question":"ответ на вопрос", (обязательный) 
  "user_id": "ид пользователя", (не обязателен, извлекается из JWT если не указан
}

PUT /api/questions/:id
DELETE /api/questions/:id

-- API.question_votes -- ??? в разработке
POST /api/question_votes

-- API.tags, ожидает access_token
GET /api/tags
GET /api/tags/:id
GET /api/tags/:id/questions
POST /api/tags
принимает {"name":"название тэга"}
POST /api/tags/:id/questions/:qid/set (нет параметров, назначает тэг для вопроса)
POST /api/tags/:id/questions/:qid/del (нет параметров, удаляет назначенный тэг)
PUT /api/tags/:id
DELETE /api/tags/:id

-- API.users, ожидает access_token
GET /api/users
GET /api/users/:id
GET /api/users/:id/answers
GET /api/users/:id/questions
POST /api/users
принимает { 
  "answer":"ответ на вопрос", (обязательный) 
  "user_id": "ид пользователя", (не обязателен, извлекается из JWT если не указан)
  "question_id": "ид вопроса"
}
PUT /api/users/:id
DELETE /api/users/:id