GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
19.6K subscribers
2.09K photos
75 videos
207 files
1.19K links
Разбор задач на проектирование систем 🚀 Канал для системных аналитиков, бизнес-аналитиков, тестировщиков и менеджеров проектов

Админ @getanalyst
Сайт https://getanalyst.ru
Чат t.me/getanalystchat
Начинающим в IT @getanalyststart

РКН №5013005196
Download Telegram
👩‍💻🧑‍💻 Когда Системный Аналитик работает с REST API 👩‍💻🧑‍💻


Когда затрагивают тему REST API, то полезно знать, что могут требовать от Системного Аналитика.

Предлагаю вам чек-лист, который вы всегда можете применить, чтобы оценить свой текущий круг обязанностей и то, что может ожидать вас в будущих проектах 🙌


👉 При создании новой функциональности
У вас в команде Frontend и Backend разрабатываются отдельно.
Frontend / Мобильные приложения взаимодействуют с Backend по REST API.
Когда в системе нужно добавить новую функциональность, то от аналитика ожидают, что он может

со стороны Backend - спроектировать REST API методы:
▫️ Определить REST API методы, которые нужно разработать для обеспечения работы Frontend.
▫️ Описать алгоритмы их работы, которые будут программировать разработчики.
▫️ Продумать требования к обработке ошибок для этих алгоритмов.
▫️ Сделать ролевую модель доступов к REST API методам.
▫️ Спроектировать структуру API-методов:
+ на естественном языке описать входные параметры запроса и параметры ответа на запрос.
+ продумывать техническую реализацию и описывать сразу тип метода (GET, POST, ...), endpoint (URL), query-параметры, headers запроса и ответа, тело JSON запроса и ответа, статус-код ответа.
▫️ Описывать маппинги (сопоставление) данных между БД и параметрами API-методов (в URL, JSON).
▫️ Формировать техническую API-документацию, которую в дальнейшем будут использовать разработчики: в Postman, Confluence или Swagger (OpenAPI).

со стороны Frontend - подключение разработанного на Backend REST API метода:
▫️ Читать техническую REST API-документацию.
▫️ Проверять работу готовых REST API методов через Postman, чтобы убедиться, что все работает так, как описано в документации.
▫️ Описывать маппинги (сопоставление) данных между UI и параметрами API-методов (в URL, JSON).


👉 Интеграция систем - подключение внешних систем
Состав подзадач аналогичен подключению API на Frontend.
Только работа ведется не с внутренней документацией, а с чужой - на внешние системы.

👉 Интеграция систем - создание интеграционных API-методов
Нужно сделать REST API-метод на Backend, который будет вызывать любой API внешней системы (хоть REST, хоть SOAP, хоть GraphQL).
Состав подзадач аналогичен проектированию API-методов на Backend.
Только маппиг данных теперь будет не только для БД и параметрами нашего API-метода (в URL, JSON). К нему добавятся еще и параметры внешней системы.


👉 Для анализа ошибок работы ПО
Что-то пошло не так при работе Frontend (или мобильного приложения)?
Открываем консоль.
Анализируем запросы и ответы REST API методов.
Тестируем сложные ситуации через Postman, смотрим на результаты и ищем причины ошибок.



Рекомендация:
Для Системного аналитика важно понимать REST API не только с точки зрения возможностей, но и с точки зрения ограничений, типовых проблем и ошибок в проектировании. Чем лучше вы их понимаете, тем качественнее будет работать ПО разработанное по вашим требованиям.



#RestApiGA
👍295🥰2👌2😁1
💻 Оптимизация БД. Работа с индексами 💻

Каждый месяц в GetAnalyst мы проводим продвинутые практикумы, посвященные проектированию БД и SQL.
Тема этого месяца:

💻 Оптимизация БД. Работа с индексами
🗓 20 ЯНВАРЯ, 19:00 Мск (пн)
🔗 Подробности и запись

План практики:
1. Нефункциональные требования и их связь с БД.
2. Понятие индексов в БД и их назначение. Разбор примеров.
3. Практика: знакомство с БД проекта и определение таблиц с индексами.
4. Проблемы избыточной оптимизации БД.
5. Индексы в постановках задач на разработчиков.

👨‍💻 Этот практикум идеально подходит для системных аналитиков, стремящихся углубить свои знания и навыки в области проектирования баз данных и оптимизации систем.

Присоединяйтесь к нам 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍9
📗 REST API - главные принципы, про которые спрашивают на собеседованиях 📗

REST API — это архитектурный стиль для создания веб-сервисов, основанный на протоколе HTTP.

То, что REST API основан на протоколе HTTP, означает, что все принципы работы, структура запросов и ответов, будут также применимы и для REST API.

Архитектурный стиль REST приносит для HTTP дополнительные правила и принципы, по которым должен происходить обмен данными в Интернете 👇

Главные принципы REST:
1. Строгое разделение клиента и сервера
2. Единый интерфейс
3. Без сохранения состояния (Stateless)
4. Многоуровневая система
5. Кэширование
6. Выполнение кода по запросу

В картинках к посту просто и с примерами разобрала эти принципы.

Это не самая ценная в работе информация, но перечень этих принципов и их понимание могут спрашивать на собеседованиях 👌

#RestApiGA
🔥3910👍10😁2🤩2
📌 Проект по REST API - Электронная Библиотека #ElibraGA 📌

Каждый месяц в канале GetAnalyst мы изучаем навыки для системных аналитиков через разбор проектов.

Этот месяц мы посвятим проектированию методов REST API для приложения электронной библиотеки #ElibraGA.


В ходе разбора темы я буду делать фокус на:
разработку корпоративных стандартов REST API в компании, которые помогают работать над проектом,
документирование REST API в Swagger.


📚 О проекте 👇

Пользователи-читатели:
+ Регистрируются на платформе через веб- или мобильное приложение
+ Оплачивают подписку, которая дает возможность скачивать 1, 3, 5 или 15 книг в месяц.
+ Получают доступ к списку книг
+ Могут скачать книгу

Администраторы платформы:
+ Добавляют новые книги
+ Редактируют или удаляют существующие
+ Просматривают полный список пользователей-читателей
+ Блокируют и активируют аккаунты читателей
+ Смотрят информацию о подписках и платежах


👉 Наши задачи по проектированию REST API методов

▫️ Сделать с нуля методы POST, GET, PUT, PATCH, DELETE
▫️ Научиться описывать JSON
▫️ Создать задачи на разработчиков
▫️ Формировать корпоративный стандарт по дизайну REST API для проекта
▫️ Создать документацию в Swagger (OpenAPI)


Подписаны на канал?
Значит вы участвуете в проекте и получаете новый опыт 🤝


Проект объявляю открытым! 🎉


#RestApiGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥59👍162😁1
💛 Структура методов REST API в одной картинке 💛

Коллеги, публикую для вас картинку-шпаргалку, которую можно использовать при проектировании методов REST API 🙌

Эта задача актуальна для старших системных аналитиков, которые работают с Backend-командами, с мобильной разработкой, в проектах с микросервисной архитектурой или в других сложных проектах, где нужно проектировать и описывать процесс обмена данными между системами.


А чтобы вы наглядно могли сопоставить структуру на картинке с реальными REST API, предлагаю вам посмотреть примеры открытой API-документации для интеграции с крупными сервисами:

ТБанк - Зарплатный проект
API - Умного дома от Яндекс
ЦИАН - Покупка и продажа недвижимости

Проверьте себя!
Это отличная практика по изучению структуры методов REST API.
Сможете ли найти все описанные на картинке параметры в документации?


Дополнительно рекомендую посмотрить эту статью, если вы пропустили пост про связь REST API и протокола HTTP.

#RestApiGA
22🔥11👍5👌3
HTTP-методы — это действия, которые надо понимать для проектирования REST API

Появились как часть протокола HTTP, чтобы стандартизировать взаимодействие между клиентом и сервером.

Каждый метод выполняет определённое действие и соответствует логике CRUD-модели (Create, Read, Update, Delete).


Основные HTTP-методы, которые нужно знать при проектировании REST API 👇


POST: создание нового ресурса
Добавить новую книгу в библиотеку.
Зарегистрировать пользователя.
Создать платеж за подписку.


GET: получение ресурсов
Посмотреть список книг.
Получить информацию о выбранной книге.
Просмотреть информацию о своём профиле.
Проверить статус подписки.



PUT: обновление ресурса целиком или создание нового
для полной замены данных ресурса - редактирования, либо для создания нового.

Вызываем PUT (изменить/создать) для книги с ISBN 1234567890:
👉 если книга с таким ISBN уже была создана, то обновить данные по ней целиком, даже если какие-то параметры, как название, не редактируются.
👉 если книга с таким ISBN еще не создана, то создать новую.

ISBN здесь будет выступать как ключ идемпотентности - уникальный идентификатор, по которому проверяем есть запись о ресурсе в системе или нет, чтобы выполнить нужное действие.



PATCH: частичное обновление ресурса
для обновления только некоторых полей ресурса - частичное редактирование.
Изменить описание книги. При этом действии в БД поменяется только её описание, и не будет полной перезаписи всех полей, даже если они не менялись, как это происходит при использовании PUT.


DELETE — удаление ресурса
Удалить выбранную книгу
Удалить выбранные книги из списка
Удалить платеж, если он не оплачен.
Удалить книгу из “избранного”.



Распространенные ошибки в REST API:
- Игнорирование назначения методов.
- Использовать все POST вместо рекомендуемых методов.
- Неправильное использование PUT и PATCH.


Правильное использование HTTP-методов в REST API упрощает взаимодействие с вашей системой, так как делает API предсказуемым и удобным для разработчиков.

#RestApiGA #ElibraGA
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍11🔥6😁1
Открыта запись на практическую программу REST API

Если вы недавно интересовались актуальными требованиями к Системным аналитикам, то наверняка видели:

+ Знание стандартов REST API / JSON
+ Опыт проектирования и документирования API
+ Понимание принципов работы мобильных приложений
+ Знание OpenAPI / Swagger для создания REST API документации
+ Навык тестирования API Backend (Postman)


Все эти навыки, в разных формулировках, ожидают от Middle и Senior Cистемных аналитиков, которым предстоит работать с Backend- или мобильными командами, в проектах с интеграциями.




Мы осваиваем их на практике в рамках одного большого проекта на программе:

💻 Дизайн REST API
🗓 Старт 4 февраля 2025
⚡️ Поток с новым форматом:
⚡️ +3 дополнительных месяца доступа к материалам и обратной связи (9 мес)
⚡️ +3 дополнительных онлайн-встречи

🔗 Узнать подробности и записаться

В ходе работы учимся проектировать методы REST API с нуля, глядя на требования, архитектуру, БД и дизайн UI/UX системы.

Проект с подвохами и сложностями, на котором “набиваем шишки”, учимся писать с нуля и структурировать API-документацию, осваиваем ключевые инструменты СА 🛠




👉 В результате вы создаете свой проект API-документации в Postman и умеете запустить работающие REST API методы Backend на заглушках, даже без навыков программирования! 🤩
Это самая весомая и “программистская” часть вашего профессионального портфолио.


🗓 До 27 января
Запись на специальных условиях с дополнительным обучением по БД в подарок, знания которой понадобятся в ходе работы на проекте.


Есть вопросы? Пишите @getanalyst или заполняйте анкету предзаписи. Мы свяжемся с вами, поможем оценить текущие навыки и ответим на вопросы! 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74👌1
GetAnalyst - Структура URL для REST API.png
1.4 MB
🔗 Структура URL для REST API методов на практике 🔗

Разбираем тему на примере методов:
👉 POST /books
👉 GET /books
👉 GET /books/{bookId}

Подробности в документе к посту.


Метод HTTP
Не относится к URL, но тесно связан с ним. Описывала правила выбора в этом посте.

Протокол
В начале любого URL указывается протокол HTTP(s), который обеспечивает передачу данных.

Доменное имя
Основной адрес, по которому можно обращаться к серверу.

Путь (Path)
Путь включает в себя один или несколько сегментов, разделённых слешами (/).

▫️“api” - указатель на каталог API сервера, может быть название вида api. Это необязательный сегмент, может отсутствовать в URL.
▫️имя api - указывает на конкретный интерфейс API, предназначенный для разных пользователей системы.
▫️v1
- версия API, важна для поддержки совместимости с предыдущими версиями.

▫️books - это ресурс, к которому осуществляется доступ. В данном случае “книга”. Может быть в единственном числе (book).
▫️{bookId} - это параметр в пути URL (path-параметр), указывающий на конкретную книгу по её id в БД системы. Фигурные скобки {} обозначают переменную часть URL, значение которой должно быть предоставлено клиентом (например, идентификатор 78679).


4️⃣ Query-параметры (Query-parameters)
Дополнительные параметры запроса после ?, необязательны. Если их несколько, то перечисление через символ &.
Обычно используются для фильтров, сортировок и пагинации при получении списков методом GET, но могут быть и в других API-методах.

В примере:
GET …/books?offset=0&limit=10&name=аналитика&yearFrom=2010

👉 ?offset=0&limit=10 указывает на запрос результатов с 0-го, ограниченный 10-ю результатами на страницу. Это два отдельных query-параметра, которые являются элементами пагинации (постраничного получения данных через API).
👉 &name=аналитика - фильтр на название книги.
👉 &yearFrom=2010 - фильтр на год выпуска книги.



Это основные элементы URL в REST API, которые помогают точно определить, к какому ресурсу (сущности) должен быть осуществлен доступ 💾

#RestApiGA #ElibraGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍248🔥5❤‍🔥1
GetAnalyst_Ошибки_проектирования_методов_REST_API.pdf
416.5 KB
🐝 Ошибки проектирования методов REST API 🐞

API (программный интерфейс) - это как UI (пользовательский интерфейс).

За нажатием на кнопку “Удалить” может скрываться алгоритм создания 🙈
Да, кнопка называется “Удалить”, но главное то, что запрограммировали разработчики в коде.

Так и с API: за методом POST на создание данных может быть реализован алгоритм получения данных.

Это самое важное, что нужно знать о REST API 🙂


Собрала для вас статью, в которой показала основные ошибки при определении методов REST API - эндпоинтов (метод HTTP + URL):

1. Выбор метода POST, GET, PUT, PATCH, DELETE, который не соответствует действию
2. Все методы POST
3. Глагол действия в URL - названии эндпоинта, который дублирует команду HTTP-метода
4. Опущена важная часть URL
5. Нарушена иерархия в URL
6. Слишком длинный путь в URL
7. Отсутствие элементов пагинации для списка
8. Единственное или множественное число в URL
9. Нарушение корпоративного стиля


Подробности с примерами в статье. Загружаем, изучаем, сохраняем в личный архив 🤝

Рекомендации из этой статьи помогут сделать ваш API интуитивно понятным и соответствующим рекомендациям архитектурного стиля REST API.

#RestApiGA #ElibraGA
🔥21👍113
Кто не успел записаться на Оптимизацию БД и индексы, то еще можно успеть подключиться к нам сегодня в 19:00 Мск.

+ занятие про распределенные БД на неделе посмотреть.


🔗 Подробности и запись тут


До встречи в эфире!
🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21
➡️ Элементы пагинации (limit, offset, count) для работы со списками в REST API ➡️

Когда мы работаем со списками в REST API, почти всегда рекомендуется использовать элементы пагинации (pagination). Особенно, при запросе данных из таблиц БД с большим количеством строк.

Элементы пагинации позволяют реализовывать постраничную выдачу данных. Другими словами, разбивать большие объемы данных на маленькие части.

Это нужно, чтобы не загружать с сервера за один запрос весь миллион записей из БД, а делать это порциями. Такое решение экономит трафик.


Ключевые параметры пагинации (допустимы другие названия):

◽️ limit — максимальное количество записей, которые хотим получить в ответе. Query-параметр.
◽️ offset — смещение, с которого начинается выборка данных. Query-параметр.
◽️ count — общее количество записей по запросу. Возвращается в ответе, в body (JSON), вместе со списком.


Пример получения списка книг в #ElibraGA:

GET https://elibraga-online.com/api/public/v1/books

Этот запрос вернет список всех книг. Но что, если книг 100тыс и нам нужно получать их список частями? Вот здесь и пригодятся limit и offset.


Допустим, нам нужно получать по 20 книг за один запрос.

🔸 Первый запрос: получить первые 20 книг
GET https://elibraga-online.com/api/public/v1/books?limit=20&offset=0

🔸 Второй запрос: еще 20 книг
GET https://elibraga-online.com/api/public/v1/books?limit=20&offset=20

🔸Третий запрос: еще 20 книг
GET https://elibraga-online.com/api/public/v1/books?limit=20&offset=40

Так мы можем получать данные частями, что значительно упрощает работу с большим количеством записей.


Зачем это нужно? 😎
1. Удобство отображения: Не все данные нужно отображать сразу, особенно если их очень много.
2. Оптимизация: Запросы с меньшим количеством данных обрабатываются быстрее и требуют меньше ресурсов.


Теперь вы знаете, как легко использовать эти параметры для работы с REST API 🙂

#RestApiGA
👍4011🔥6
🙌 Сводка по проектированию эндпоинтов REST API 🙌

🔗 HTTP-методы
🔗 Структура URL
🔗 Ошибки проектирования методов REST API

Проверим, насколько вы хорошо усвоили материал по эндпоинтам REST API.

Попробуйте ответить на вопросы, а затем сравнить с предложенными ответами 👇


1. Какой метод сделать для регистрации нового пользователя?
POST
https://elibraga-online.com/api/public/v1/createUser
В URL дублируется действие (глагол create), которое уже указывает HTTP-метод POST.
POST
https://elibraga-online.com/api/public/v1/users
+ Метод POST используется для создания новых ресурсов - регистрация = создание пользователя.
+ users является сущностью, к которой относится запрос.


2. Как получить список авторов с фильтрацией по жанру?
GET .../api/public/v1/authorsByGenre/{genre}
Фильтрация по жанру в данном случае не является частью основного ресурса.
GET .../api/public/v1/authors?genre=fiction
+ Query-параметры позволяют удобно передавать фильтры, такие как genre=fiction. Значение жанра может отличаться, также их можно перечислить через запятую. Это делает запрос гибким и легко расширяемым.


3. Как получить список заказов пользователя?

GET .../api/public/v1/orders
То, что это заказы конкретного пользователя, понимает за счет того, что запрос подписан авторизацией.
GET .../api/admin/v1/users/123/orders
Для админского метода выстроена иерархия от пользователя к заказу для просмотра заказов внутри информации о пользователе.
GET .../api/admin/v1/orders?userId=123
В общем списке заказов в админке можно применить фильтр по пользователю.


4. Как сделать метод отмены заказа пользователем?
◽️DELETE .../api/public/v1/orders/{orderId}
Больше подходит, чтобы показать удаление неоплаченного заказа.

PATCH .../api/public/v1/orders/{orderId}/cancel
Глагол действия на смену статуса вынесен в конец URL, что часто встречается для PATCH (еще бывают archive, pay и подобные).


Сколько правильных ответов получилось?
Задавайте вопросы в комментариях 🙂
Делитесь результатами и доп решениями💡

#RestApiGA #ElibraGA
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥7👍62😁1