https://github.com/rdavydenko/socialnetworkapi
API для социальной сети. Возможности: регистрация, вход, выход пользователя, добавление друзей через систему заявок и подписчиков, создание и редактирование новых диалогов, добавление пользователей в диалоги, добавление сообщений в диалоги и т.д.
https://github.com/rdavydenko/socialnetworkapi
api asp-net-core asp-net-core-api csharp entity-framework-core ms-sql-server rest-api
Last synced: 2 months ago
JSON representation
API для социальной сети. Возможности: регистрация, вход, выход пользователя, добавление друзей через систему заявок и подписчиков, создание и редактирование новых диалогов, добавление пользователей в диалоги, добавление сообщений в диалоги и т.д.
- Host: GitHub
- URL: https://github.com/rdavydenko/socialnetworkapi
- Owner: RDavydenko
- Created: 2020-07-13T11:28:41.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-28T08:03:21.000Z (over 4 years ago)
- Last Synced: 2025-01-18T14:22:02.339Z (4 months ago)
- Topics: api, asp-net-core, asp-net-core-api, csharp, entity-framework-core, ms-sql-server, rest-api
- Language: C#
- Homepage:
- Size: 828 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.html
Awesome Lists containing this project
README
Руководство программиста
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;
}
Данное руководство представляет из себя описание всех доступных методов API, типов данных и
др. Примеры находятся внизу страницы
Логирование и регистрация
Метод
URL
Название
Параметры
Описание
POST
/api/auth/signin
Вход
- Username string
- Password string
Авторизует пользователя в системе.
POST
/api/auth/signout
Выход
Выходит из системы
POST
/api/auth/create
Регистрация
- Username string
- Password string
Регистрирует нового пользователя и авторизует его.
Username - длина от 6 до 32
Password - длина от 6 до 16
Пользователи
Метод
URL
Название
Параметры
Описание
GET
/api/users/{id}
О пользователе
Получить информацию о пользователе
по id - идентификатору пользователя.
Возвращает один объект типа User
GET
/api/users/me
О себе
Получить информацию о пользователе (о себе)
Возвращает один объект типа User
POST
/api/users/edit
Редактирование
Объект типа User
Изменить данные пользователя
Возвращает объект типа User с изменениями
GET
/api/users/{id}/friends
Список друзей
Получить список друзей пользователя
по id - идентификатору пользователя.
Возвращает массив объектов с полями:
Id - идентификатор дружбы
FriendId - идентификатор пользователя друга
GET
/api/users/{id}/followers
Список подписчиков
Получить список подписчиков пользователя
по id - идентификатору пользователя.
Возвращает массив объектов с полями:
Id - идентификатор подписки
FollowerId - идентификатор подписчика
GET
/api/users/{id}/requests
Список запросов
Получить список запросов пользователя
по id - идентификатору пользователя.
Возвращает массив объектов с полями:
Id - идентификатор запроса
RequestId - идентификатор подписки
Друзья, подписки и подписчики
Метод
URL
Название
Параметры
Описание
POST
/api/friends/add/{id}
Добавить в друзья
Добавляет в друзья (либо подписывается)
на пользователя по id пользователя
Возвращает объект с полями:
Message - сообщение о проделаной операции
Id - в зависимости от Message либо идентификатор дружбы,
либо идентификатор запроса в друзья
POST
/api/friends/{friendshipId}/remove
Удалить из друзей
Удаляет из друзей по friendshipId --
идентификатор дружбы (не пользователя)
POST
/api/friends/unfollow/{id}
Отписаться
Отписывает от пользователя (отменят запрос в друзья)
по id - идентификатору пользователя
Диалоги
Метод
URL
Название
Параметры
Описание
GET
/api/dialogs
Список диалогов
Получить список диалогов пользователя.
Возвращает массив объектов типа Dialog
GET
/api/dialogs/{id}/messages
Список сообщений диалога
Получить список сообщений из диалога с идентификатором id.
Возвращает массив объектов Message
GET
/api/dialogs/{id}/members
Список участников
Получить список участников диалога
по id - идентификатору диалога.
Возвращает массив индентификаторов пользователей-участников.
POST
/api/dialogs/{id}/message
Написать сообщение
- Text string
Добавляет новое сообщение в диалог по id диалога.
Теxt - длина до 10000
Возвращает объект типа Message
POST
/api/dialogs/create
Создать диалог
- Title string
Создает новый диалог с названием Title.
Title - длина от 1 до 32
Возвращает объект типа Dialog
POST
/api/dialogs/{id}/add
Добавить пользователей
- UserIds массив int
Добавляет пользователей в диалог по id диалога.
POST
/api/dialogs/{id}/leave
Выйти из диалога
Позволяет пользователю выйти из диалога
по id диалога.
Сообщения
Метод
URL
Название
Параметры
Описание
GET
/api/messages/{id}
Инфо о сообщении
Получить одно сообщение по id сообщения.
Возвращает объект типа Message
POST
/api/messages/{id}/edit
Редактирование
- Объект типа Message
Редактирует сообщение по id сообщения.
Возвращает объект типа Message
POST
/api/messages/{id}/delete
Удалить
Удаляет сообщение пользователя
по id - идентификатору сообщения.
Типы данных
User (пользователь)
Название
Тип данных
Описание
Id
int
Уникальный идентификатор
UserName
string
Логин
string
Адрес электронной почты
BirthdayDate
string
Дата рождения
Sex
int
Пол
- 0 - Мужской
- 1 - Женский
- 2 - Другой
Status
string
Статус
Dialog (диалог)
Название
Тип данных
Описание
Id
int
Уникальный идентификатор
Title
string
Название
CreatingTime
DateTime
Дата создания диалога
LastMessageTime
DateTime
Дата последнего сообщения
Message (сообщение)
Название
Тип данных
Описание
Id
int
Уникальный идентификатор
Text
string
Текст сообщения
SendingTime
DateTime
Время отправки
AuthorId
int
Уникальный идентификатор автора сообщения
Reponse (ответ от сервера)
Название
Тип данных
Описание
Ok
bool
Если true - успешное выполнение,
если false - ошибка при выполнении
StatusCode
int
Статусный код ответа
Description
string
Человекочитаемое описание причины ошибки
Result
Любой
Возвращаемый результат, если таковой ожидается
(см. какой метод, что возвращает)
Примеры
1) Логирование (успешное)
Запрос
$.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);
}
});
Ответ
{
"ok": true,
"statusCode": 200,
"description": null,
"result": null
}
2) Получение списка друзей
Запрос
$.ajax({
url: '/api/users/1/friends',
type: 'GET',
dataType: 'json',
success: function(result) {
console.log(result);
}
});
Ответ
{
"ok": true,
"statusCode": 200,
"description": null,
"result": [
{
"id": 3,
"friendId": 3
},
{
"id": 4,
"friendId": 2
}
]
}
3) Получение информации о сообщении (неудача)
Запрос
$.ajax({
url: '/api/messages/1000',
type: 'GET',
dataType: 'json',
success: function(result) {
console.log(result);
}
});
Ответ
{
"ok": false,
"statusCode": 404,
"description": "Сообщение не найдено",
"result": null
}
4) Редактирование пользователя (передача и получение сложного объекта)
Запрос
$.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);
}
});
Ответ
{
"ok": true,
"statusCode": 200,
"description": null,
"result": {
"id": 2,
"userName": "Ivan",
"email": null,
"birthdayDate": null,
"sex": 0,
"status": "У меня новый статус!"
}
}