-
Notifications
You must be signed in to change notification settings - Fork 0
API для социальной сети. Возможности: регистрация, вход, выход пользователя, добавление друзей через систему заявок и подписчиков, создание и редактирование новых диалогов, добавление пользователей в диалоги, добавление сообщений в диалоги и т.д.
RDavydenko/SocialNetworkApi
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Руководство программиста</title> <style> body { background-color: rgb(219, 219, 219); font-family: Arial, Helvetica, sans-serif; font-size: 18px; } a:visited { color: blue; } .container { background-color: #fff; max-width: 1920px; margin: 0 auto; padding: 15px; } .main-desc { font-size: 20px; border-bottom: 1px solid #000; padding-bottom: 10px; } .block { margin-bottom: 40px; } .block__title { font-size: 40px; text-transform: uppercase; margin-bottom: 10px; } .method { font-weight: 600; border-radius: 10px; text-align: center; width: fit-content; padding: 5px; } .method-post { background-color: rgb(255, 208, 0); } .method-get { background-color: rgb(100, 136, 255); } .url { font-size: 18px; color: rgb(100, 100, 100); } .param-type { font-size: 15px; font-style: italic; color: rgb(100, 100, 100); } .status-code { color: #fff; padding: 0px 3px; } .code-200 { background-color: rgb(7, 160, 45); } table { width: 100%; } .query-param { color: rgb(0, 38, 255); } table { border-collapse: collapse; } table td { border: 1px solid rgb(214, 214, 214); text-align: left; vertical-align: top; padding: 10px; } .entity { margin-bottom: 40px; } .entity__name { font-size: 25px; font-weight: 800; } .block table th:nth-child(1), .block table td:nth-child(1) { width: 5%; } .block table th:nth-child(2), .block table td:nth-child(2) { width: 25%; } .block table th:nth-child(3), .block table td:nth-child(3) { width: 15%; } .block table th:nth-child(4), .block table td:nth-child(4) { width: 15%; } .entity table th:nth-child(1), .entity table td:nth-child(1) { width: 30%; } .entity table th:nth-child(2), .entity table td:nth-child(2) { width: 20%; } .entity table th:nth-child(3), .entity table td:nth-child(3) { width: 50%; } .example { display: flex; justify-content: space-between; margin-bottom: 20px; } .example-body:nth-child(2) { background-color: rgb(236, 239, 241); } .example-body:nth-child(3) { background-color: rgb(237, 241, 236); } .example-body:nth-child(4) { background-color: rgb(240, 236, 241); } .example-body:nth-child(5) { background-color: rgb(241, 239, 236); } .example__number { font-size: 22px; margin-bottom: 5px; } .example__title { text-align: center; font-weight: 800; } .query { text-align: left; width: 40%; } .response { width: 40%; } pre { margin: 0; } </style> </head> <body> <div class="container"> <p class="main-desc">Данное руководство представляет из себя описание всех доступных методов API, типов данных и др. Примеры находятся <a href="#example">внизу</a> страницы</p> <div class="methods" id="methods"> <div class="block"> <div class="block__title">Логирование и регистрация</div> <table> <tr> <th>Метод</th> <th>URL</th> <th>Название</th> <th>Параметры</th> <th>Описание</th> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/auth/signin</td> <td class="title">Вход</td> <td class="params"> <ul> <li>Username <span class="param-type">string</span></li> <li>Password <span class="param-type">string</span></li> </ul> </td> <td class="description"> Авторизует пользователя в системе.<br> </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/auth/signout</td> <td class="title">Выход</td> <td class="params"></td> <td class="description">Выходит из системы</td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/auth/create</td> <td class="title">Регистрация</td> <td class="params"> <ul> <li>Username <span class="param-type">string</span></li> <li>Password <span class="param-type">string</span></li> </ul> </td> <td class="description">Регистрирует нового пользователя и авторизует его.<br> Username - длина от 6 до 32<br> Password - длина от 6 до 16<br> </tr> </table> </div> <div class="block"> <div class="block__title">Пользователи</div> <table> <tr> <th>Метод</th> <th>URL</th> <th>Название</th> <th>Параметры</th> <th>Описание</th> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/users/<span class="query-param">{id}</span></td> <td class="title">О пользователе</td> <td class="params"></td> <td class="description"> Получить информацию о пользователе<br> по <span class="query-param">id</span> - идентификатору пользователя.<br> Возвращает один объект типа <a href="#user">User</a> </td> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/users/me</td> <td class="title">О себе</td> <td class="params"></td> <td class="description"> Получить информацию о пользователе (о себе)<br> Возвращает один объект типа <a href="#user">User</a> </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/users/edit</td> <td class="title">Редактирование</td> <td class="params"> Объект типа <a href="#user">User</a> </td> <td class="description"> Изменить данные пользователя<br> Возвращает объект типа <a href="#user">User</a> с изменениями<br> </td> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/users/<span class="query-param">{id}</span>/friends</td> <td class="title">Список друзей</td> <td class="params"></td> <td class="description"> Получить список друзей пользователя<br> по <span class="query-param">id</span> - идентификатору пользователя.<br> Возвращает массив объектов с полями:<br> Id - идентификатор дружбы<br> FriendId - идентификатор пользователя друга </td> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/users/<span class="query-param">{id}</span>/followers</td> <td class="title">Список подписчиков</td> <td class="params"></td> <td class="description"> Получить список подписчиков пользователя<br> по <span class="query-param">id</span> - идентификатору пользователя.<br> Возвращает массив объектов с полями:<br> Id - идентификатор подписки<br> FollowerId - идентификатор подписчика </td> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/users/<span class="query-param">{id}</span>/requests</td> <td class="title">Список запросов</td> <td class="params"></td> <td class="description"> Получить список запросов пользователя<br> по <span class="query-param">id</span> - идентификатору пользователя.<br> Возвращает массив объектов с полями:<br> Id - идентификатор запроса<br> RequestId - идентификатор подписки </td> </tr> </table> </div> <div class="block"> <div class="block__title">Друзья, подписки и подписчики</div> <table> <tr> <th>Метод</th> <th>URL</th> <th>Название</th> <th>Параметры</th> <th>Описание</th> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/friends/add/<span class="query-param">{id}</span></td> <td class="title">Добавить в друзья</td> <td class="params"> </td> <td class="description"> Добавляет в друзья (либо подписывается)<br> на пользователя по <span class="query-param">id</span> пользователя <br> Возвращает объект с полями: <br> Message - сообщение о проделаной операции <br> Id - в зависимости от Message либо идентификатор дружбы, <br> либо идентификатор запроса в друзья </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/friends/<span class="query-param">{friendshipId}</span>/remove</td> <td class="title">Удалить из друзей</td> <td class="params"></td> <td class="description"> Удаляет из друзей по <span class="query-param">friendshipId</span> -- <br> идентификатор дружбы (не пользователя) </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/friends/unfollow/<span class="query-param">{id}</span></td> <td class="title">Отписаться</td> <td class="params"> </td> <td class="description"> Отписывает от пользователя (отменят запрос в друзья)<br> по <span class="query-param">id</span> - идентификатору пользователя<br> </tr> </table> </div> <div class="block"> <div class="block__title">Диалоги</div> <table> <tr> <th>Метод</th> <th>URL</th> <th>Название</th> <th>Параметры</th> <th>Описание</th> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/dialogs</td> <td class="title">Список диалогов</td> <td class="params"> </td> <td class="description"> Получить список диалогов пользователя.<br> Возвращает массив объектов типа <a href="#dialog">Dialog</a><br> </td> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/dialogs/<span class="query-param">{id}</span>/messages</td> <td class="title">Список сообщений диалога</td> <td class="params"></td> <td class="description"> Получить список сообщений из диалога с идентификатором <span class="query-param">id</span>.<br> Возвращает массив объектов <a href="#message">Message</a> </td> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/dialogs/<span class="query-param">{id}</span>/members</td> <td class="title">Список участников</td> <td class="params"> </td> <td class="description"> Получить список участников диалога<br> по <span class="query-param">id</span> - идентификатору диалога.<br> Возвращает массив индентификаторов пользователей-участников. </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/dialogs/<span class="query-param">{id}</span>/message</td> <td class="title">Написать сообщение</td> <td class="params"> <ul> <li>Text <span class="param-type">string</span></li> </ul> </td> <td class="description"> Добавляет новое сообщение в диалог по <span class="query-param">id</span> диалога.<br> Теxt - длина до 10000 <br> Возвращает объект типа <a href="#message">Message</a> </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/dialogs/create</td> <td class="title">Создать диалог</td> <td class="params"> <ul> <li>Title <span class="param-type">string</span></li> </ul> </td> <td class="description"> Создает новый диалог с названием Title.<br> Title - длина от 1 до 32<br> Возвращает объект типа <a href="#dialog">Dialog</a> </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/dialogs/<span class="query-param">{id}</span>/add</td> <td class="title">Добавить пользователей</td> <td class="params"> <ul> <li>UserIds <span class="param-type">массив int</span></li> </ul> </td> <td class="description"> Добавляет пользователей в диалог по <span class="query-param">id</span> диалога.<br> </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/dialogs/<span class="query-param">{id}</span>/leave</td> <td class="title">Выйти из диалога</td> <td class="params"> </td> <td class="description"> Позволяет пользователю выйти из диалога<br> по <span class="query-param">id</span> диалога. </td> </tr> </table> </div> <div class="block"> <div class="block__title">Сообщения</div> <table> <tr> <th>Метод</th> <th>URL</th> <th>Название</th> <th>Параметры</th> <th>Описание</th> </tr> <tr> <td> <div class="method method-get">GET</div> </td> <td class="url">/api/messages/<span class="query-param">{id}</span></td> <td class="title">Инфо о сообщении</td> <td class="params"> </td> <td class="description"> Получить одно сообщение по <span class="query-param">id</span> сообщения.<br> Возвращает объект типа <a href="#message">Message</a><br> </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/messages/<span class="query-param">{id}</span>/edit</td> <td class="title">Редактирование</td> <td class="params"> <ul> <li>Объект типа <a href="#message">Message</a></li> </ul> </td> <td class="description"> Редактирует сообщение по <span class="query-param">id</span> сообщения.<br> Возвращает объект типа <a href="#message">Message</a> </td> </tr> <tr> <td> <div class="method method-post">POST</div> </td> <td class="url">/api/messages/<span class="query-param">{id}</span>/delete</td> <td class="title">Удалить</td> <td class="params"> </td> <td class="description"> Удаляет сообщение пользователя<br> по <span class="query-param">id</span> - идентификатору сообщения.<br> </tr> </table> </div> </div> <div class="block"> <div class="block__title">Типы данных</div> <div class="entity"> <div id="user" class="entity__name">User (пользователь)</div> <div class="entity__fields"> <table> <tr> <th>Название</th> <th>Тип данных</th> <th>Описание</th> </tr> <tr> <td>Id</td> <td><span class="param-type">int</span></td> <td>Уникальный идентификатор</td> </tr> <tr> <td>UserName</td> <td><span class="param-type">string</span></td> <td>Логин</td> </tr> <tr> <td>Email</td> <td><span class="param-type">string</span></td> <td>Адрес электронной почты</td> </tr> <tr> <td>BirthdayDate</td> <td><span class="param-type">string</span></td> <td>Дата рождения</td> </tr> <tr> <td>Sex</td> <td><span class="param-type">int</span></td> <td>Пол <ul> <li>0 - Мужской</li> <li>1 - Женский</li> <li>2 - Другой</li> </ul> </td> </tr> <tr> <td>Status</td> <td><span class="param-type">string</span></td> <td>Статус</td> </tr> </table> </div> </div> <div class="entity"> <div id="dialog" class="entity__name">Dialog (диалог)</div> <div class="entity__fields"> <table> <tr> <th>Название</th> <th>Тип данных</th> <th>Описание</th> </tr> <tr> <td>Id</td> <td><span class="param-type">int</span></td> <td>Уникальный идентификатор</td> </tr> <tr> <td>Title</td> <td><span class="param-type">string</span></td> <td>Название</td> </tr> <tr> <td>CreatingTime</td> <td><span class="param-type">DateTime</span></td> <td>Дата создания диалога</td> </tr> <tr> <td>LastMessageTime</td> <td><span class="param-type">DateTime</span></td> <td>Дата последнего сообщения</td> </tr> </table> </div> </div> <div class="entity"> <div id="message" class="entity__name">Message (сообщение)</div> <div class="entity__fields"> <table> <tr> <th>Название</th> <th>Тип данных</th> <th>Описание</th> </tr> <tr> <td>Id</td> <td><span class="param-type">int</span></td> <td>Уникальный идентификатор</td> </tr> <tr> <td>Text</td> <td><span class="param-type">string</span></td> <td>Текст сообщения</td> </tr> <tr> <td>SendingTime</td> <td><span class="param-type">DateTime</span></td> <td>Время отправки</td> </tr> <tr> <td>AuthorId</td> <td><span class="param-type">int</span></td> <td>Уникальный идентификатор автора сообщения</td> </tr> </table> </div> </div> <div class="entity"> <div id="response" class="entity__name">Reponse (ответ от сервера)</div> <div class="entity__fields"> <table> <tr> <th>Название</th> <th>Тип данных</th> <th>Описание</th> </tr> <tr> <td>Ok</td> <td><span class="param-type">bool</span></td> <td>Если <strong>true</strong> - успешное выполнение,<br> если <strong>false</strong> - ошибка при выполнении </td> </tr> <tr> <td>StatusCode</td> <td><span class="param-type">int</span></td> <td>Статусный код ответа</td> </tr> <tr> <td>Description</td> <td><span class="param-type">string</span></td> <td>Человекочитаемое описание причины ошибки</td> </tr> <tr> <td>Result</td> <td><span class="param-type">Любой</span></td> <td>Возвращаемый результат, если таковой ожидается <br> (<a href="#methods">см.</a> какой метод, что возвращает) </td> </tr> </table> </div> </div> </div> <div class="block"> <div id="example" class="block__title">Примеры</div> <div class="example-body"> <div class="example__number">1) Логирование (успешное)</div> <div class="example"> <div class="query"> <div class="example__title">Запрос</div> <pre> <code> $.ajax({ url: '/api/auth/signin', type: 'POST', contentType: 'application/json; charset=utf-8', data: JSON.stringify({ username: 'User', password: '123456' }), dataType: 'json', success: function(result) { console.log(result); } }); </code> </pre> </div> <div class="response"> <div class="example__title">Ответ</div> <pre> <code> { "ok": true, "statusCode": 200, "description": null, "result": null } </code> </pre> </div> </div> </div> <div class="example-body"> <div class="example__number">2) Получение списка друзей</div> <div class="example"> <div class="query"> <div class="example__title">Запрос</div> <pre> <code> $.ajax({ url: '/api/users/1/friends', type: 'GET', dataType: 'json', success: function(result) { console.log(result); } }); </code> </pre> </div> <div class="response"> <div class="example__title">Ответ</div> <pre> <code> { "ok": true, "statusCode": 200, "description": null, "result": [ { "id": 3, "friendId": 3 }, { "id": 4, "friendId": 2 } ] } </code> </pre> </div> </div> </div> <div class="example-body"> <div class="example__number">3) Получение информации о сообщении (неудача)</div> <div class="example"> <div class="query"> <div class="example__title">Запрос</div> <pre> <code> $.ajax({ url: '/api/messages/1000', type: 'GET', dataType: 'json', success: function(result) { console.log(result); } }); </code> </pre> </div> <div class="response"> <div class="example__title">Ответ</div> <pre> <code> { "ok": false, "statusCode": 404, "description": "Сообщение не найдено", "result": null } </code> </pre> </div> </div> </div> <div class="example-body"> <div class="example__number">4) Редактирование пользователя (передача и получение сложного объекта)</div> <div class="example"> <div class="query"> <div class="example__title">Запрос</div> <pre> <code> $.ajax({ url: '/api/users/edit', type: 'POST', contentType: 'application/json; charset=utf-8', data: JSON.stringify({ username: 'Ivan', status: 'У меня новый статус!', sex: 0 }), dataType: 'json', success: function(result) { console.log(result); } }); </code> </pre> </div> <div class="response"> <div class="example__title">Ответ</div> <pre> <code> { "ok": true, "statusCode": 200, "description": null, "result": { "id": 2, "userName": "Ivan", "email": null, "birthdayDate": null, "sex": 0, "status": "У меня новый статус!" } } </code> </pre> </div> </div> </div> </div> </div> </body> </html>
About
API для социальной сети. Возможности: регистрация, вход, выход пользователя, добавление друзей через систему заявок и подписчиков, создание и редактирование новых диалогов, добавление пользователей в диалоги, добавление сообщений в диалоги и т.д.
Topics
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published