GetAnalyst - Старт карьеры в IT • Системный аналитик • Бизнес-аналитик
4.77K subscribers
1.96K photos
77 videos
20 files
360 links
Канал для начинающих карьеру системных аналитиков. Влюбиться в системый анализ и начать свой путь в IT можно здесь! 🚀

Для опытных аналитиков - Навыки • БД • Интеграции • API:
t.me/getanalysts

Обучение:
https://getanalyst.ru/education
Download Telegram
👩‍💻 6 принципов REST API про которые спрашивают на собеседованиях 👩‍💻

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


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

👉 Подробнее про работу HTTP-протокола и его связь с REST API разбирали в этой статье.

Пример:
+ в HTTP есть виды методов: GET, POST, PUT, PATCH и т.д.
+ в REST API методы абсолютно те же.

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


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

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


Это не самая ценная в работе информация, но перечень этих принципов и их понимание могут спрашивать на собеседованиях 👌 #hardGetAnalyst
👍135
HTTP-методы в REST API: это спросят на собеседовании

GET, POST, PUT, PATCH и DELETE - виды методов, часть протокола HTTP.
Нужны, чтобы стандартизировать взаимодействие между клиентом и сервером.

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


🩷 GET
Чтение данных.
Не поддерживает тело - Body (JSON).
Идемпотентен.


💚 POST
Создание объектов в БД.
Не идемпотентен.

* Исключения, когда POST используют для чтения: сложные запросы с большим кол-вом фильтров, асинхронные операции.

* Почему в некоторых REST API все POST? Потому что они не REST API, а HTTP API.


💙 PUT
Полная замена и/или создание ресурса.
В теле JSON требует полный объект.
Идемпотентен.

* Часто используют только для изменения.


💜 PATCH
Частичное обновление ресурса.
В теле JSON передаются только те поля объекта, которые нужно изменить.
Не идемпотентен.


❤️ DELETE
Удаление ресурса.
Не поддерживает тело - Body (JSON).
Идемпотентен.


💛 А что по поводу TRACE, HEAD, OPTIONS, CONNECT?
Могут быть полностью заменены GET-ом.
Очень маленький шанс встретить или применить на практике.


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


P.S. Ссылка на подкаст про идемпотентность и коммутативность в API #hardGetAnalyst
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Помним главное: мы уже молодцы.

С началом рабочей недели, друзья ✔️😉
Please open Telegram to view this post
VIEW IN TELEGRAM
15
🤖 Как аналитики работают в Generative AI проектах: старт карьеры, ключевые навыки и задачи 🤖

Повсюду «AI, AI, AI»: Generative AI, LLM, Fine-Tuning, RAG — но что это значит для системных и бизнес-аналитиков?
Куда бежать, что изучать и с чего начать, если уже сейчас хочется новый виток в карьере в направлении AI?

В этом выпуске разбираем реальные проекты, задачи и роли в компании red_mad_robot: где место аналитика в Generative AI, какие навыки нужны на старте и как меняется работа команд по сравнению с «обычными» IT-проектами.

🔗 Сайт эпизода
🔗 Компания red_mad_robot
🔗 AI акселератор для СА и БА

Анастасия и Игорь «раскрывают кухню» Generative AI-проектов: RAG vs Fine-Tuning, Small LLMs, метрики качества, безопасность и свой реальный опыт работы. К концу эпизода вы поймёте, с чего начать переход, какие артефакты добавить в портфолио и чего ожидать на собеседованиях.

✍️ Слушайте, делайте заметки и задавайте вопросы в комментариях, чтобы мы могли дать вам максимум пользы от этого выпуска!


Эпизод доступен в:
Apple Podcast
Яндекс.Музыка
Telegram
Castbox
Звук
Spotify
RuTube
YouTube
VK Video


GetAnalyst - сообщество, где аналитики каждый день получают новый опыт и самые актуальные знания! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥2
Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)

Проектирование REST API - это процесс создания дизайна методов обмена данными. Дизайн - это субъективное. У одних "так", у других "сяк". А кто прав? Иногда все, а иногда нет.

В следующих постах рассмотрим спорные вопросы с проектов и собеседований, которые связаны с созданием контрактов REST API.

Вопросы взяли по итогам общения с системными аналитиками, которые недавно проходили собеседования, с открытого вебинара GetAnalyst.

Но для начала повторим, что такое REST API и для чего.

REST API - это архитектурный стиль, который определяет, по каким правилам приложения должны обмениваться данными между собой. Он используется для создания веб-сервисов, мобильных приложений, интеграционных платформ и других IT-решений.

Впервые был определен и описан Роем Филдингом в диссертации 2000-го года. Рой Филдинг - соавтор спецификаций HTTP и URI.

Главная цель REST API - облегчить передачу и управление информацией между разными системами: создавать, читать, изменять, удалять (CRUD). REST API использует для этого стандартные HTTP-запросы: GET, POST, PUT, DELETE и другие.

🔹 REST API - это архитектурный стиль проектирования взаимодействия приложений.
🔹 HTTP - протокол, на основе которого работает REST API.
Отличие REST API от других видов API, таких как SOAP API, ftp и RPC, заключается в том, что REST API не имеет жестких правил и структур, и может быть использован с любым языком программирования - Java, Python, C++ и другие.

Из-за того, что REST API не имеет жестких правил и структур, и возникают спорные вопросы, связанные с его проектированием. #hardGetAnalyst

⬇️ Первый вопрос рассмотрим в следующем посте⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
👉 Можно ли использовать метод POST для получения данных?
Да, можно.

Метод POST изначально предназначен для отправки данных на сервер с целью их обработки и создания новых записей в БД. В то же время его можно использовать для получение данных в следующих случаях:

1️⃣ Запросы на получение данных (списки объектов) с большим количеством фильтров
Когда необходимо реализовать большое количество фильтров для получения списка, то решение отправлять их все в URL запроса как query-параметры не лучшее, т.к. это делает URL очень длинным. Это может вызвать проблемы с ограничениями на длину URL в некоторых веб-серверах или браузерах.

Кроме того, сложные и многочисленные параметры в URL могут затруднить читаемость и понимание запроса для других разработчиков и пользователей API.

Пример:

Допустим, у нас есть API для получения списка книг из базы данных. Пользователь может фильтровать этот список по автору, жанру, году публикации, издательству, рейтингу и многим другим параметрам. Если пытаться передать все эти фильтры в URL, то он может выглядеть так:

Метод "Получение списка книг с применением фильтров":

GET https://test-system.com/api/books?author=Толстой&genre=роман&year=1877&publisher=Огонек&rating=5&...

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

Вместо этого, можно использовать метод POST для передачи всех этих параметров в теле запроса в формате JSON:

Метод "Создание поискового запроса на получение списка книг с применением фильтров":
POST https://test-system.com/api/books/search

{
"author": "Толстой",
"genre": "роман",
"year": 1877,
"publisher": "Огонек",
"rating": 5,
...
}

Такой подход делает запрос более структурированным и читаемым, избегая проблем с длиной URL. Кроме того, это позволяет легко расширять список фильтров в будущем без страха ограничений.

В двух этих примерах результат будет идентичный: тело ответа со списком книг, отфильтрованных по заданным пользователем параметрам.

Стоит отметить, что при выборе метода POST для таких запросов, необходимо четко документировать это поведение в API-документации, чтобы избежать путаницы среди пользователей API.

2️⃣ Асинхронные запросы на получение данных: комбинирование POST и GET
Асинхронные запросы на получение данных реализуются за счет комбинации методов POST и GET.

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

Реализуются асинхронные запросы последовательным использованием методов:

🔹 POST - используется для создания задачи на сервере. При получении такого запроса, сервер помещает задачу в очередь на обработку и возвращает идентификатор задачи.

🔹 GET - с помощью этого метода можно проверить статус выполнения задачи, используя идентификатор, предоставленный на предыдущем шаге. Как только задача завершена, через этот же метод можно получить результаты его выполнения.

Отчеты: В больших системах формирование отчетов может требовать обработки огромных объемов данных, что занимает много времени. Вместо ожидания окончания процесса, пользователь может отправить запрос на формирование отчета и вернуться к нему позже.

1. Пользователь отправляет POST-запрос для формирования отчета по продажам. При этом в теле запроса передаются параметры, необходимые для формирования отчета, такие как диапазон дат, тип отчета или другие фильтры.

Метод размещения запроса на формирование отчета:

POST /api/reports/sales

{
"startDate": "2023-01-01",
"endDate": "2023-12-31"
}

После обработки этого запроса сервер создает задачу на формирование отчета и помещает ее в очередь.

Cервер возвращает идентификатор задачи. Этот уникальный идентификатор позволяет пользователю отслеживать статус формирования отчета.
7
{
"taskId": "12345"
}

2. Через некоторое время пользователь может отправить GET-запрос, чтобы проверить, готов ли отчет или получить его, если он готов.

Метод получения информации по статусу формирования отчета или готового отчета:

GET /api/reports/sales/status/{taskId}
Если отчет еще формируется:

{
"status": "progress"
}

Если отчет уже готов, пользователь может скачать его, используя предоставленный URL в ответе или получить его структуру. Зависит от выбранного способа реализации.

Пример, если в ответ на отчет готова ссылка на его загрузку:

{
"status": "completed",
"reportUrl": "/api/reports/sales/download/12345"
}

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

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

1. Пользователь отправляет POST-запрос с деталями поиска (дата, пункт назначения и т.д.).

Метод размещения запроса на поиск авиабилетов:

POST /api/tickets/search

{
"departure": "2023-10-30",
"destination": "Rome",
...
}

Сервер возвращает идентификатор задачи - идентификатор созданного запроса на поиск.

{
"searchId": "Уникальный идентификатор задачи"
}

2. Через некоторое время пользователь делает GET-запрос с этим идентификатором, чтобы узнать статус поиска.

Метод получения статуса или информации по результатам поиска, если он завершен:

GET /api/tickets/search/{searchId}
или
GET /api/tickets/search/status/{searchId}

Ответ (если поиск еще не завершен):

{
"status": "progress"
}

Как только поиск завершен, пользователь получает список доступных рейсов в ответ на GET-запрос.

Этот подход обеспечивает эффективное использование ресурсов сервера и хороший UX для пользователя, который не вынужден ждать завершения длительных операций, а может поставить задачу на получение данных в фон, или получать результаты поиска быстро и порциями, по мере сбора данных из разных систем (помните, когда во время поиска авиабилетов у вас постоянно добавляются новые и новые записи?).

Это лишь часть примеров, но они являются наиболее ярким подтверждением того, что POST может использоваться для получения данных.
9
Друзья, продолжаем говорить о спорных вопросах при проектировании REST API ✔️

Сегодня разберём ещё два вопроса ⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉2
👉 Можно ли в GET передавать тело запроса?
Не стоит, оно будет проигнорировано или обрезано.

HTTP-спецификация не запрещает передачу тела запроса в методе GET, но этот подход считается нестандартным и может вызвать определенные проблемы и вопросы при разработке и использовании API.

Почему передача тела запроса в GET может показаться привлекательной? В некоторых сценариях может возникнуть потребность в передаче сложных данных для фильтрации или поиска, которые сложно или невозможно передать через URL в виде query-параметров.

Главная проблема такого подхода: не все клиенты и серверы поддерживают передачу тела запроса в методе GET. Некоторые из них могут игнорировать тело запроса или возвращать ошибку. Проще говоря, тело запроса будет проигнорировано или "обрезано".

👉 Как правильно именовать эндпоинты - ед. число или мн. число (/user или /users)?
Можно и так, и так. Но нужно ориентироваться на то, как названы остальные эндпоинты в проекте. В новом API предложили бы делать в ед. числе, т.к. было больше опыта в этом.

В именовании ресурсов в REST API есть разные подходы, и, честно говоря, нет строгого стандарта.

Однако на практике чаще всего предпочитают использовать единственное число для ресурсов. Но и множественное число также активно используется!

Согласно множественному подходу, даже если хотите получить информацию о конкретной задаче, вы все равно обращаетесь к "коллекции" задач и выбираете одну из них.

Примеры:

Единственное число:
GET /task/123 - получить информацию о задаче с ID 123.
POST /task - создать новую задачу.

Множественное число:
GET /tasks - получить список всех задач
GET /tasks/123 - получить информацию о задаче с ID 123.
POST /tasks - создать новую задачу.

Множественное число представляет собой коллекцию элементов, что соответствует идеологии REST для метода добавления нового элемента в коллекцию и чтения списка - /tasks читается легче, где у вас есть коллекция ресурсов и конкретные ресурсы внутри этой коллекции.

Рекомендации по множественному числу есть в гайдлайнах:

1) Microsoft API Guidelines: 7.4.1. POST ---> POST http://api.contoso.com/account1/servers

2) Google Cloud API Design Guide: Resource names ---> Example 1: A storage service has a collection of buckets, where each bucket has a collection of objects

При этом, если мы взглянем на Яндекс:

Пример с ед. числом:
https://yandex.ru/dev/rasp/doc/ru/reference/nearest-settlement

Пример с мн. числом:
https://yandex.ru/dev/market/partner-api/doc/ru/overview/express

📌 Наглядный пример как в рамках одной огромной компании работали разные команды.

От чего зависит выбор? От опыта команды, и как комфортнее воспринимать методы при чтении.

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

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

Хотя я предпочитаю единственное число, для меня важнее договоренность с командой и поддержка единого подхода на протяжении всего проекта.
9
GetAnalyst_Ответы_на_задания_по_REST_API_для_подготовки_к_собеседованию.pdf
551.9 KB
📚🤖 Вопросы по REST API к собеседованию на СА + AI-помощник для подготовки к собеседованиям 📚🤖

Вопросы с собеседований — это всегда отличный способ размяться перед реальным интервью или вспомнить то, что давно не использовали в работе.

Прикрепили к посту два файла:


1. Только вопросы
2. Эти же вопросы, но с краткими ответами



🤖 Рекомендации по самопроверке и подготовке к интервью с помощью AI:

1. Скачайте pdf-файл с ответами из этого поста (второй по порядку).

2. Откройте ChatGPT и войдите в бесплатный аккаунт, используя учётную запись Google.
https://chatgpt.com/

3. Откройте новый диалог (New Chat в левом меню).

4.1. Загрузите файл в ChatGPT.
В зоне ввода текста есть иконка "+".
Нажмите на неё и появится иконка скрепки с надписью "Добавить файл" (Add photos & files").

4.2. Вставьте промпт:
Представь, что ты системный аналитик с опытом более 10 лет в IT. Ты хочешь нанять senior системного аналитика к себе в команду и я пришёл к тебе на техническое собеседование.
Ты строгий и занудный, требуешь четких ответов с примерами.
Используй файл, который я добавил, и на его основе задавай мне по одному случайному вопросу.
После того, как я отвечу, давай оценку моим ответами по 10-бальной шкале по критериям: точность ответа, понимание вопроса. Поясняй каждый балл и предлагай как можно было бы улучшить мой ответ.
Каждый раз, когда я буду писать "следующий вопрос", ты можешь задавать мне следующий вопрос из моего документа или придумывать аналогичные, с подобными задачами.
Сразу после этого сообщения можешь задать мне первый вопрос.


5. Ваше интервью началось.
Отвечайте на вопросы.
❗️ Не печатайте текст на теоретические вопросы, а говорите ответы голосом, где возможно!
Используйте иконку "микрофон", чтобы записывать свои ответы и отдавать их на проверку Искусственному Интеллекту.
Получайте обратную связь от ИИ и улучшайтесь 😌


+ В помощь на собеседования:
JSON Editor Online


Сохраняйте и пользуйтесь.
Сейчас или в будущем 🤝


🔥 и 🩷 приветствуются))
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2313
🗓💥 [30.10 в 19:00 Мск] Postman, Insomnia и AI для REST API — на практике 💥🗓

REST API — один из главных навыков системного аналитика. Его спрашивают на собеседованиях и используют каждый день в задачах бэкенда, микросервисов, интеграций и мобильных приложений.


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

💥 Postman, Insomnia и AI — на практике:
проверим чужие API и спроектируем свои REST API-методы с нуля


🗓 30 октября (чт), в 19:00 МСК
🟢 Онлайн

🔗
Зарегистрироваться

План:
1. Теория по REST API - только то, что пригодится в практике.
2. Postman & Insomnia: создаём коллекции и проверяем внешние API.
3. Настройка AI-ассистента для работы с проектированием REST API.
4. Проектирование и документация собственного REST API-метода в Insomnia + AI.


Это полноценное обучение, которое даст вам реальный опыт работы с REST API и тремя самыми актуальными инструментами 🚀

--------
Занятие проводится в качестве вводного урока к практической программе Дизайн REST API.
--------

Регистрируйтесь и подключайтесь онлайн в следующий четверг! 😉
6
Понедельник может быть поводом к началу изменений🙌

С началом новой рабочей недели!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18