9.6 KiB
Анализ соответствия API чата между Android приложением и бэкендом
Обзор
Проанализированы API чата в Android приложении и бэкенд-системе для выявления соответствий и несоответствий.
Android API (ChatApiService.kt)
Доступные эндпоинты:
-
Провайдеры чата
GET /api/chat/providers- Получение списка провайдеров чата
-
Чаты
GET /api/chat/chats- Получение списка чатовGET /api/chat/chats/{chatId}- Получение конкретного чатаDELETE /api/chat/chats/{chatId}- Удаление чата
-
Сообщения чата
GET /api/chat/chats/{chatId}/messages- Получение сообщений чатаPOST /api/chat/chats/{chatId}/messages- Отправка сообщенияPUT /api/chat/chats/{chatId}/messages/{messageId}/status/{status}- Обновление статуса сообщенияPUT /api/chat/chats/{chatId}/status/read- Отметка всех сообщений как прочитанных
-
Непрочитанные сообщения
GET /api/chat/unseen-count- Получение количества непрочитанных сообщений
Бэкенд API (NestJS)
Доступные эндпоинты:
ChatController (api/chat/chats)
POST /api/chat/chats/personal- Создание личного чатаPOST /api/chat/chats/group- Создание группового чатаPOST /api/chat/chats/external- Создание внешнего чатаGET /api/chat/chats/group/exists/:entityId- Проверка существования чата по entityGET /api/chat/chats- Получение чатов с пагинациейGET /api/chat/chats/find- Поиск чатов (простой)GET /api/chat/chats/find/full- Поиск чатов (полный)GET /api/chat/chats/find/full/personal- Поиск личных чатовGET /api/chat/chats/find/full/by-message-content- Поиск по содержанию сообщенийGET /api/chat/chats/:chatId- Получение чата по IDPATCH /api/chat/chats/group/:chatId- Обновление группового чатаDELETE /api/chat/chats/:chatId- Удаление чатаPUT /api/chat/chats/:chatId/pin/:messageId- Закрепление сообщенияPUT /api/chat/chats/:chatId/unpin/:messageId- Открепление сообщенияPUT /api/chat/chats/:chatId/status/:status- Обновление статуса сообщенийPOST /api/chat/chats/:chatId/contact- Создание контакта и лида
ChatMessageController (api/chat/chats/:chatId/messages)
POST /api/chat/chats/:chatId/messages- Создание сообщенияGET /api/chat/chats/:chatId/messages- Получение сообщенийGET /api/chat/chats/:chatId/messages/:messageId- Получение конкретного сообщенияPUT /api/chat/chats/:chatId/messages/:messageId- Обновление сообщенияDELETE /api/chat/chats/:chatId/messages/:messageId- Удаление сообщенияPOST /api/chat/chats/:chatId/messages/status/:status- Обновление статуса сообщений (массовое)PUT /api/chat/chats/:chatId/messages/:messageId/status/:status- Обновление статуса сообщенияPUT /api/chat/chats/:chatId/messages/:messageId/react/:reaction- Реакция на сообщениеPUT /api/chat/chats/:chatId/messages/:messageId/unreact/:reactionId- Удаление реакции
MultichatController (api/chat)
GET /api/chat/unseen-count- Получение количества непрочитанных сообщений
Соответствия API
✅ Полностью соответствующие эндпоинты:
-
Получение списка провайдеров
- Android:
GET /api/chat/providers - Backend:
GET /api/chat/providers
- Android:
-
Получение списка чатов
- Android:
GET /api/chat/chats - Backend:
GET /api/chat/chats
- Android:
-
Получение конкретного чата
- Android:
GET /api/chat/chats/{chatId} - Backend:
GET /api/chat/chats/:chatId
- Android:
-
Удаление чата
- Android:
DELETE /api/chat/chats/{chatId} - Backend:
DELETE /api/chat/chats/:chatId
- Android:
-
Получение сообщений чата
- Android:
GET /api/chat/chats/{chatId}/messages - Backend:
GET /api/chat/chats/:chatId/messages
- Android:
-
Отправка сообщения
- Android:
POST /api/chat/chats/{chatId}/messages - Backend:
POST /api/chat/chats/:chatId/messages
- Android:
-
Обновление статуса сообщения
- Android:
PUT /api/chat/chats/{chatId}/messages/{messageId}/status/{status} - Backend:
PUT /api/chat/chats/:chatId/messages/:messageId/status/:status
- Android:
-
Получение количества непрочитанных сообщений
- Android:
GET /api/chat/unseen-count - Backend:
GET /api/chat/unseen-count
- Android:
Несоответствия и недостающие функции
❌ Отсутствующие в Android API:
-
Создание чатов
- Личные чаты:
POST /api/chat/chats/personal - Групповые чаты:
POST /api/chat/chats/group - Внешние чаты:
POST /api/chat/chats/external
- Личные чаты:
-
Поиск чатов
- Простой поиск:
GET /api/chat/chats/find - Полный поиск:
GET /api/chat/chats/find/full - Поиск по имени пользователя:
GET /api/chat/chats/find/full/personal - Поиск по содержанию сообщений:
GET /api/chat/chats/find/full/by-message-content
- Простой поиск:
-
Управление чатами
- Обновление группового чата:
PATCH /api/chat/chats/group/:chatId - Закрепление сообщений:
PUT /api/chat/chats/:chatId/pin/:messageId - Открепление сообщений:
PUT /api/chat/chats/:chatId/unpin/:messageId - Создание контактов:
POST /api/chat/chats/:chatId/contact
- Обновление группового чата:
-
Расширенное управление сообщениями
- Массовое обновление статуса:
POST /api/chat/chats/:chatId/messages/status/:status - Реакции на сообщения:
PUT /api/chat/chats/:chatId/messages/:messageId/react/:reaction - Удаление реакций:
PUT /api/chat/chats/:chatId/messages/:messageId/unreact/:reactionId - Удаление сообщений:
DELETE /api/chat/chats/:chatId/messages/:messageId
- Массовое обновление статуса:
-
Дополнительные функции
- Проверка существования чата:
GET /api/chat/chats/group/exists/:entityId
- Проверка существования чата:
Рекомендации по улучшению Android API
1. Добавить создание чатов
// Добавить в ChatApiService
@POST("api/chat/chats/personal")
suspend fun createPersonalChat(@Body request: CreatePersonalChatRequest): Response<Chat>
@POST("api/chat/chats/group")
suspend fun createGroupChat(@Body request: CreateGroupChatRequest): Response<Chat>
@POST("api/chat/chats/external")
suspend fun createExternalChat(@Body request: CreateExternalChatRequest): Response<Chat>
2. Добавить поиск чатов
// Добавить в ChatApiService
@GET("api/chat/chats/find")
suspend fun findChats(@QueryMap filters: Map<String, String>): Response<ChatsResponse>
@GET("api/chat/chats/find/full")
suspend fun findChatsFull(@QueryMap filters: Map<String, String>): Response<ChatsResponse>
3. Добавить управление сообщениями
// Добавить в ChatApiService
@DELETE("api/chat/chats/{chatId}/messages/{messageId}")
suspend fun deleteMessage(@Path("chatId") chatId: Long, @Path("messageId") messageId: Long): Response<Unit>
@PUT("api/chat/chats/{chatId}/messages/{messageId}/react/{reaction}")
suspend fun reactToMessage(
@Path("chatId") chatId: Long,
@Path("messageId") messageId: Long,
@Path("reaction") reaction: String
): Response<ChatMessage>
@POST("api/chat/chats/{chatId}/messages/status/{status}")
suspend fun updateMessagesStatus(
@Path("chatId") chatId: Long,
@Path("status") status: String,
@Body messageIds: List<Long>
): Response<List<ChatMessage>>
4. Добавить управление чатами
// Добавить в ChatApiService
@PUT("api/chat/chats/{chatId}/pin/{messageId}")
suspend fun pinMessage(@Path("chatId") chatId: Long, @Path("messageId") messageId: Long): Response<Chat>
@PUT("api/chat/chats/{chatId}/unpin/{messageId}")
suspend fun unpinMessage(@Path("chatId") chatId: Long, @Path("messageId") messageId: Long): Response<Chat>
Заключение
Android API имеет хорошее соответствие с бэкендом для базовых операций (получение чатов, сообщений, отправка сообщений), но отсутствует множество функций для полноценного управления чатами. Для создания полноценного чат-клиента рекомендуется расширить Android API в соответствии с доступными бэкенд-эндпоинтами.