You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Запросы к серверу

Все запросы отправляются как POST запросы с содержанием "application/json". В ответ сервер всегда возвращает HTTP 200 OK и с содержанием "application/json". Единственное исключение — это методы, которые работают с файлам. В теле ответа содержится информация об успешности запроса, результат или ошибка. Для результата может быть приложен граф связанных объектов. Например, если в результате вернулось сообщение в чате, в графе связанных объектов будет пользователь, который отправил это сообщение. Данных подход позволяет снизить объем дублируемых данных в ответах.

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

POST /api/tickets/create_message HTTP/1.1
Host: app.iqstore.ru
Connection: keep-alive
Content-Length: 65
Origin: http://app.iqstore.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
Content-Type: application/json
Cookie: user-session=7b6ea6627729db70414da6518561ddc2e07a320e.00000000000000000

{"TicketId":103,"Message":{"LocalId":1548142724904,"Type":"text","Text":"Hello"}}



Пример ответа:

HTTP/1.1 200 OK
Server: nginx/1.11.13
Date: Fri, 09 Feb 2018 10:16:21 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Accept, Accept-Encoding, Accept-Language, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, Cache-Control, Connection, Content-Type, Cookie, Host, Origin, Pragma, Referer, X-Requested-With, User-Agent
Access-Control-Allow-Methods: GET, HEAD, POST, OPTIONS
Access-Control-Allow-Origin: http://dev.iqstore.ru
Pragma: no-cache
Cache-Control: private, must-revalidate
Content-Encoding: gzip
 

{
"OK": true,
"Error": null,
"Ping": false,
"Data": {
"Message": {
"Id": 1632,
"UID": "a75247b226787bc7fc2e337e28d898c2eb46da14",
"TicketId": 103,
"LocalId": 1548142724904,
"Author": "user",
"ClientId": null,
"UserId": 1,
"Type": "text",
"Text": "Hello",
"Received": false,
"Read": false,
"CreatedAt": 1548142724951,
"UpdatedAt": 1548142724951,
"ReceivedAt": null,
"ReadAt": null,
"My": true
},
"Graph": {
"Users": [
{
"Id": 1,
"Name": "Иван Коробков",
"Email": "i.korobkov@iqstore.ru",
"Position": "Технический директор",
"RoleId": 1,
"AvatarId": "baac46c4-c475-11e7-999e-fb4e907475d9.jpg",
"Online": true,
"Active": true,
"Deleted": false,
"TotalAssignedTickets": 1,
"CreatedAt": 1508308102244,
"UpdatedAt": 1548142724569,
"LastSeenAt": 1548142724569,
"AssignedAt": 1548142706408,
"DisplayName": "Иван Коробков",
"Permissions": null
}
]
}
}
}

Авторизация запросов

Для авторизации запросов к серверу используется токен сессии, который пользователь получает после авторизации. Токен автоматически проставляется в Cookie. 

Cookie: user-session ${session-token}

POST /api/tickets/create_message HTTP/1.1
Host: app.iqstore.ru
Connection: keep-alive
Content-Length: 65
Origin: http://app.iqstore.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
Content-Type: application/json
Cookie: user-session=7b6ea6627729db70414da6518561ddc2e07a320e.00000000000000000
 
{"TicketId":103,"Message":{"LocalId":1548142724904,"Type":"text","Text":"Hello"}}

Типы данных

Response

Поле

Тип

Обязательное

Комментарий

OKboolДа

true – успешный ответ
false – ошибка

ErrorErrorНетИнформация об ошибке.
DataAnyНетУспешный результат, тип зависит от вызываемого метода.
GraphGraphНетГраф зависимых объектов, на которые ссылается результат.

Error

Ошибка.

Поле

Тип

Nullable

Описание

CodeErrorCode
Код ошибки
Textstring
Описание ошибки

ErrorCode

Константа

Значение

Описание

ErrorCodeNotFound"not_found"Объект не найден
ErrorCodeForbidden"forbidden"Доступ запрещен
ErrorCodeUnauthorized"unauthorized"Ошибка авторизации
ErrorCodeInvalid"invalid"Ошибка валидации данных
  • No labels