An open API service indexing awesome lists of open source software.

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 для социальной сети. Возможности: регистрация, вход, выход пользователя, добавление друзей через систему заявок и подписчиков, создание и редактирование новых диалогов, добавление пользователей в диалоги, добавление сообщений в диалоги и т.д.

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
Редактирование




Редактирует сообщение по id сообщения.

Возвращает объект типа Message




POST


/api/messages/{id}/delete
Удалить



Удаляет сообщение пользователя

по id - идентификатору сообщения.





Типы данных


User (пользователь)




Название
Тип данных
Описание


Id
int
Уникальный идентификатор


UserName
string
Логин


Email
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": "У меня новый статус!"
}
}