На практическом вебинаре на прошлой неделе я показывала вам схему архитектуры без применения нотаций моделирования. А стандарты по проектировани схем архитектуры полезно знать. Расскажу сегодня про один из них 😉
Нотация моделирования C4 - это подход к визуализации архитектуры программного обеспечения, созданный Саймоном Брауном. Появился он в результате чтения лекций по архитектуре на курсе 🙂
C4 состоит из четырех уровней представления:
1. Context: высокоуровневый взгляд на систему. Показывает приложения и пользователей, без технических деталей.
2. Container: углубляет представление системы, описывая основные части, или "контейнеры" (backend-приложение, веб-приложение, мобильного приложение, базы данных, файловая система), которые входят в состав системы. На этом уровне определены функции каждого контейнера, технологические решения по языкам программирования, протоколы взаимодействия.
3. Component: детализирует каждый контейнер, описывая его компоненты и их взаимодействие.
4. Code: наиболее детальный уровень, описывающий внутреннюю структуру каждого компонента. Часто используются UML-диаграммы для его описания. Не обязателен.
C4 помогает представить сложные системы простым и понятным образом, что делает его популярной нотацией моделирования архитектуры для аналитиков и архитекторов ПО.
Удобнее всего создавать С4 в draw.io. Но есть и альтернативные инструменты. Например - Miro!
🟢 Делюсь ссылкой на шаблон + пример C4 для Miro 🟢
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥11👍3👏2
Можно всё и ещё больше ❤️🌹❤️🔥
Сегодня девушки могут достигнуть высот в карьере и бизнесе, доказывая, что нет ничего невозможного. Много девушек-коллег в IT очень преданно, ответственно и с любовью относятся к своей работе. И нереально много работают. Зато благодаря своим усилиям и стараниям всегда добиваются результатов. И могут всё сами))
В этот весенний день я хочу напомнить себе и девушкам, что несмотря на всю нашу силу, следует помнить о легкости и о той уникальной энергии, которую мы можем принести в этот мир.
Пусть этот весенний день принесет радость! Пусть мужчины впечатляют и продолжают проявлять себя как джентльмены рядом.с вами, что особенно заметно в IT-сфере 💪
В мире технологий всегда есть место красоте, легкости и доброте!
С весной и прекрасным праздником! ❤️🌸
Сегодня девушки могут достигнуть высот в карьере и бизнесе, доказывая, что нет ничего невозможного. Много девушек-коллег в IT очень преданно, ответственно и с любовью относятся к своей работе. И нереально много работают. Зато благодаря своим усилиям и стараниям всегда добиваются результатов. И могут всё сами))
В этот весенний день я хочу напомнить себе и девушкам, что несмотря на всю нашу силу, следует помнить о легкости и о той уникальной энергии, которую мы можем принести в этот мир.
Пусть этот весенний день принесет радость! Пусть мужчины впечатляют и продолжают проявлять себя как джентльмены рядом.с вами, что особенно заметно в IT-сфере 💪
В мире технологий всегда есть место красоте, легкости и доброте!
С весной и прекрасным праздником! ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤18🎉11👍2
Forwarded from 👩🏻💻 Подкаст Системных Аналитиков | GetAnalyst
💫 ПРОБЛЕМЫ В РАБОТЕ С ЗАДАЧАМИ НА ИНТЕГРАЦИИ 💫
В новом эпизоде подкаста мы погрузимся в проблемы разработки требований на интеграции систем, с которыми могут встретиться системные аналитики, а также обсудим варианты их решения.
Этот эпизод представляет ценную информацию для начинающих и опытных системных аналитиков, стремящихся разобраться в работе с интеграционными задачами и обеспечить стабильное взаимодействие систем.
1:18 - Что такое интеграции?
4:25 - Роль системного аналитика в процессе работы с задачами на интеграции.
11:41 - Как изменилась работа с задачами на интеграции за последние годы?
16:49 - Написал требования в соответствии с API-документацией внешней системы, а потом оказалось, что работает не так.
19:40 - Интеграция работала в продакшн и всё было хорошо, а потом всё внезапно сломалось.
22:57 - Что делать если предстоит интегрироваться с системой у которой еще нет API, а сроки горят?
26:18 - Разработчик системы, с которой предстоит интегрироваться, не предоставляет API и доступы, а задачу нужно реализовать, потому что сроки (P.S. Влиять через заказчика на внешнюю команду при возможности).
28:07 - Что, если вы тот самый разработчик, у которого просят API, но вам пока не до этого?
29:21 - Платные подписки и использование внешних систем. Примеры: DaData.ru, сервисы SMS-рассылок с поштучной оплатой со счета заказчика и другие.
31:58 - Разные структуры данных в разных системах: как собрать всё в нашей системе воедино? Про агрегаторы.
36:07 - Высокие нагрузки и длительное ожидание ответов. Асинхронные запросы и вебхуки.
39:37 - Не работал с видом API, по которому предстоит интеграция (REST API, GraphQL, gRPC, SOAP API и WebSocket - основные, посмотрите на них).
42:02 - Заключение и рекомендации
Эпизод доступен в:
⏯ Яндекс.Музыка
⏯ YouTube
⏯ Telegram
⏯ Apple Podcast
⏯ Castbox
⏯ Spotify
⏯ Amazon Music
Подписывайтесь на подкаст и делитесь с коллегами, начинающими и опытными системными аналитиками!
В новом эпизоде подкаста мы погрузимся в проблемы разработки требований на интеграции систем, с которыми могут встретиться системные аналитики, а также обсудим варианты их решения.
Этот эпизод представляет ценную информацию для начинающих и опытных системных аналитиков, стремящихся разобраться в работе с интеграционными задачами и обеспечить стабильное взаимодействие систем.
1:18 - Что такое интеграции?
4:25 - Роль системного аналитика в процессе работы с задачами на интеграции.
11:41 - Как изменилась работа с задачами на интеграции за последние годы?
16:49 - Написал требования в соответствии с API-документацией внешней системы, а потом оказалось, что работает не так.
19:40 - Интеграция работала в продакшн и всё было хорошо, а потом всё внезапно сломалось.
22:57 - Что делать если предстоит интегрироваться с системой у которой еще нет API, а сроки горят?
26:18 - Разработчик системы, с которой предстоит интегрироваться, не предоставляет API и доступы, а задачу нужно реализовать, потому что сроки (P.S. Влиять через заказчика на внешнюю команду при возможности).
28:07 - Что, если вы тот самый разработчик, у которого просят API, но вам пока не до этого?
29:21 - Платные подписки и использование внешних систем. Примеры: DaData.ru, сервисы SMS-рассылок с поштучной оплатой со счета заказчика и другие.
31:58 - Разные структуры данных в разных системах: как собрать всё в нашей системе воедино? Про агрегаторы.
36:07 - Высокие нагрузки и длительное ожидание ответов. Асинхронные запросы и вебхуки.
39:37 - Не работал с видом API, по которому предстоит интеграция (REST API, GraphQL, gRPC, SOAP API и WebSocket - основные, посмотрите на них).
42:02 - Заключение и рекомендации
Эпизод доступен в:
⏯ Яндекс.Музыка
⏯ YouTube
⏯ Telegram
⏯ Apple Podcast
⏯ Castbox
⏯ Spotify
⏯ Amazon Music
Подписывайтесь на подкаст и делитесь с коллегами, начинающими и опытными системными аналитиками!
👍23❤6🔥1😍1
This media is not supported in your browser
VIEW IN TELEGRAM
Как правильно реализовать выгрузку файлов в облако: практическое руководство в этом видео 🧐
Февральско-мартовские выходные подходят к концу, и мы снова возвращаемся в бодрый рабочий темп после мини-отпуска!
С понедельника перейдём к разбору нового проекта в GetAnalyst, а пока отдыхаем и в фоне слушаем новый выпуск подкаста🎙
Крутого воскресенья! Проведите его с удовольствием! 💛
Февральско-мартовские выходные подходят к концу, и мы снова возвращаемся в бодрый рабочий темп после мини-отпуска!
С понедельника перейдём к разбору нового проекта в GetAnalyst, а пока отдыхаем и в фоне слушаем новый выпуск подкаста
Крутого воскресенья! Проведите его с удовольствием! 💛
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25❤9👍1
Привет! Возвращаюсь к вам с новыми проектами на интеграции! 😌
Я не повторяю проекты, чтобы пополнять базу знаний GetAnalyst и рассматривать разные практические задачи, подходить к темам с разных сторон.
В этот раз выбор нового проекта дался мне не просто. Хотелось показать:
1. Любой API с авторизацией, с которым можно сделать интеграцию, чтобы рассказать о том, как писать требования и в чём могут быть сложности.
2. Нестандартный API, чтобы все в канале узнали для себя что-то новое.
3. Постановку задачи на интеграцию на все 100%: фронтенд, бэкенд, БД, маппинги и остальное.
И, казалось бы, это типовые задачи любого проекта с интеграциями, даже нестандартные API уже встречаются чаще, чем раньше. Бери и показывай 🙂 Но не всё так просто для публичных разборов.
Я хожу к вендорам (разработчикам внешних систем, с которыми интегрироваться) и запрашиваю у них доступы к тестовым площадкам. В открытую разбираю их API и документацию. Это возможно не с любой системой - увы. Не у всех открытая документация и доступы.
А ещё и запас известных API кончается 😀 Я уже много показала в рамках обучающих программ, открытых вебинаров и здесь в канале. И хочу новое каждый раз.
Путём исследований, напряжений памяти и фантазии нашла 3 проекта, которые можем сделать, с новыми API! Ура! 🎉
📌 Начнём с нестандартного API - интеграция через GraphQL.
Делаем мини-проект “Чеклист путешественника” или “Travel Points” - полный разбор с нуля: с постановкой задач на UI, БД, маппинги и интеграционные REST API бэкенда.
Начнём проект сегодня! ❤️
Я не повторяю проекты, чтобы пополнять базу знаний GetAnalyst и рассматривать разные практические задачи, подходить к темам с разных сторон.
В этот раз выбор нового проекта дался мне не просто. Хотелось показать:
1. Любой API с авторизацией, с которым можно сделать интеграцию, чтобы рассказать о том, как писать требования и в чём могут быть сложности.
2. Нестандартный API, чтобы все в канале узнали для себя что-то новое.
3. Постановку задачи на интеграцию на все 100%: фронтенд, бэкенд, БД, маппинги и остальное.
И, казалось бы, это типовые задачи любого проекта с интеграциями, даже нестандартные API уже встречаются чаще, чем раньше. Бери и показывай 🙂 Но не всё так просто для публичных разборов.
Я хожу к вендорам (разработчикам внешних систем, с которыми интегрироваться) и запрашиваю у них доступы к тестовым площадкам. В открытую разбираю их API и документацию. Это возможно не с любой системой - увы. Не у всех открытая документация и доступы.
А ещё и запас известных API кончается 😀 Я уже много показала в рамках обучающих программ, открытых вебинаров и здесь в канале. И хочу новое каждый раз.
Путём исследований, напряжений памяти и фантазии нашла 3 проекта, которые можем сделать, с новыми API! Ура! 🎉
📌 Начнём с нестандартного API - интеграция через GraphQL.
Делаем мини-проект “Чеклист путешественника” или “Travel Points” - полный разбор с нуля: с постановкой задач на UI, БД, маппинги и интеграционные REST API бэкенда.
Начнём проект сегодня! ❤️
❤47👍19🔥15❤🔥8
📌 Новый проект на интеграции через GraphQL API - Travel Points 📌
Разрабатываем мобильное приложение с чеклистом путешественника, где пользователь сможет отмечать, какие страны он посетил.
Приложение состоит из экранов:
1. Регистрация, авторизация, восстановление пароля от ЛК.
2. Главный экран, на котором отображается список стран, на которые можно переходить для просмотра описания. Недавно посещенные страны отображаются в ТОП-е, вверху списка.
3. Экраны с описанием страны - флаг, языки, регионы и другая информация.
4. На экране с описанием страны можно:
4.1. Отметить, что посетил страну.
4.2. Добавлять заметки с описанием о путешествии в свободной форме. Заметок может быть несколько.
На стороне приложения Travel Points не реализуем хранение справочника стран, храним только базовую информацию о тех, которые посетил пользователь.
Используем готовый справочник countries.trevorblades, к которому будем подключаться по API GraphQL, для отображения полного списка стран пользователю и детальной информации о каждой стране.
👉 API-документация GraphQL:
🔗 https://countries.trevorblades.com/
Допущения:
1. Это учебный проект. В реальном я бы один раз все страны в БД импортировала и всё. Представим, что есть динамическая информация у стран и поэтому постоянно запрашиваем их по API.
2. Странная API-документация, так как API явно разработан в учебных целях. Поэтому для примера хочу показать вам API-документацию Shopify (облачная платформа e-Commerce, которая позволяет бизнесам создавать свои интернет-магазины).
Проект простой, но полезный для знакомства с интеграциями по GraphQL API:
1. Познакомимся со структурой запросов-ответов GraphQL API.
2. Потестируем GraphQL API в Postman.
3. Сделаем небольшую схему архитектуры.
4. Сделаем БД.
5. Опишем постановку задачи на разработку интеграционного REST API метода для мобильного приложения.
6. Опишем постановку задачи на мобильное приложение, которое будет показывать данные.
Welcome to the project! 🙌
#ИнтеграцииGA #TravelPoints
Разрабатываем мобильное приложение с чеклистом путешественника, где пользователь сможет отмечать, какие страны он посетил.
Приложение состоит из экранов:
1. Регистрация, авторизация, восстановление пароля от ЛК.
2. Главный экран, на котором отображается список стран, на которые можно переходить для просмотра описания. Недавно посещенные страны отображаются в ТОП-е, вверху списка.
3. Экраны с описанием страны - флаг, языки, регионы и другая информация.
4. На экране с описанием страны можно:
4.1. Отметить, что посетил страну.
4.2. Добавлять заметки с описанием о путешествии в свободной форме. Заметок может быть несколько.
На стороне приложения Travel Points не реализуем хранение справочника стран, храним только базовую информацию о тех, которые посетил пользователь.
Используем готовый справочник countries.trevorblades, к которому будем подключаться по API GraphQL, для отображения полного списка стран пользователю и детальной информации о каждой стране.
👉 API-документация GraphQL:
Допущения:
1. Это учебный проект. В реальном я бы один раз все страны в БД импортировала и всё. Представим, что есть динамическая информация у стран и поэтому постоянно запрашиваем их по API.
2. Странная API-документация, так как API явно разработан в учебных целях. Поэтому для примера хочу показать вам API-документацию Shopify (облачная платформа e-Commerce, которая позволяет бизнесам создавать свои интернет-магазины).
Проект простой, но полезный для знакомства с интеграциями по GraphQL API:
1. Познакомимся со структурой запросов-ответов GraphQL API.
2. Потестируем GraphQL API в Postman.
3. Сделаем небольшую схему архитектуры.
4. Сделаем БД.
5. Опишем постановку задачи на разработку интеграционного REST API метода для мобильного приложения.
6. Опишем постановку задачи на мобильное приложение, которое будет показывать данные.
Welcome to the project! 🙌
#ИнтеграцииGA #TravelPoints
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35❤9🔥7
⭐️ Онлайн-практикум по миграциям БД в этот четверг ⭐️
С этого года я провожу дополнительное обучение по БД и SQL для разбора сложных задач, которые выходят за пределы базовых знаний и помогают в ежедневной работе по развитию систем.
Тема, которую буду разбирать в этот четверг, связана с миграциями данных как внутри одной БД, так и между разными БД и СУБД.
Цель - показать как доработки БД могут влиять на релизы функциональности, научить выстраивать последовательность обновлений базы и показать на что обращать внимание при переезде с одной СУБД на другую.
📚 Разработка требований к миграциям БД
🗓 14 марта в 19:00 Мск
📌 План:
1. Определение понятия миграции данных. Примеры.
2. Требования к обратной совместимости данных. Распространенные ошибки.
3. Влияние нефункциональных требований на миграции в БД.
4. Практика проектирования миграций внутри одной БД.
5. Обзор проблем миграций данных между разными СУБД. Практика.
6. Обзор шаблона постановки задачи на разработчиков по миграции данных.
Практикум проводится в рамках программы по дополнительному обучению БД и SQL.
Участие полезно для тех, кто уже знаком с проектированием БД и хочет погружаться глубже в детали 👀
До встречи онлайн!
С этого года я провожу дополнительное обучение по БД и SQL для разбора сложных задач, которые выходят за пределы базовых знаний и помогают в ежедневной работе по развитию систем.
Тема, которую буду разбирать в этот четверг, связана с миграциями данных как внутри одной БД, так и между разными БД и СУБД.
Цель - показать как доработки БД могут влиять на релизы функциональности, научить выстраивать последовательность обновлений базы и показать на что обращать внимание при переезде с одной СУБД на другую.
📚 Разработка требований к миграциям БД
🗓 14 марта в 19:00 Мск
📌 План:
1. Определение понятия миграции данных. Примеры.
2. Требования к обратной совместимости данных. Распространенные ошибки.
3. Влияние нефункциональных требований на миграции в БД.
4. Практика проектирования миграций внутри одной БД.
5. Обзор проблем миграций данных между разными СУБД. Практика.
6. Обзор шаблона постановки задачи на разработчиков по миграции данных.
Практикум проводится в рамках программы по дополнительному обучению БД и SQL.
Участие полезно для тех, кто уже знаком с проектированием БД и хочет погружаться глубже в детали 👀
До встречи онлайн!
❤11🔥5👍3
🧩 Что такое интеграции на примере приложения Такси 🧩
Суть приложения такси:
1. Выбрать точку А и точку Б на карте.
2. Рассчитать стоимость поездки.
3. Создать заказ для пользователя.
4. Обеспечить для него возможность оплатить заказ онлайн: банковской картой или другим способом.
Среди этих шагов отдельно можно выделить интеграционные части:
✔️ встроенную в приложение карту, то есть интегрированную в него;
✔️ подключенную платежную систему для проведения оплаты, то есть интегрированную к нему.
✔️ мобильное приложение такси для отображения данных на экране использует специализированный программный интерфейс - API, через который обращается к серверу и получает от него данные для визуализации, то есть мобильное приложение интегрировано с сервером.
Много примеров можно привести, чтобы прийти к выводу: в современных системах интеграции везде 👌
Интеграция систем — это процесс объединения различных информационных систем и приложений в единое целое для обмена данными или распределения задач.
В приложении #TravelPoints интеграции будут использоваться для получения списка стран по GraphQL API и для отображения списка стран в мобильном приложении по REST API.
Погружайтесь в интеграции через пример с такси - картинки в этом посте 🚖
#ИнтеграцииGA
Суть приложения такси:
1. Выбрать точку А и точку Б на карте.
2. Рассчитать стоимость поездки.
3. Создать заказ для пользователя.
4. Обеспечить для него возможность оплатить заказ онлайн: банковской картой или другим способом.
Среди этих шагов отдельно можно выделить интеграционные части:
✔️ встроенную в приложение карту, то есть интегрированную в него;
✔️ подключенную платежную систему для проведения оплаты, то есть интегрированную к нему.
✔️ мобильное приложение такси для отображения данных на экране использует специализированный программный интерфейс - API, через который обращается к серверу и получает от него данные для визуализации, то есть мобильное приложение интегрировано с сервером.
Много примеров можно привести, чтобы прийти к выводу: в современных системах интеграции везде 👌
Интеграция систем — это процесс объединения различных информационных систем и приложений в единое целое для обмена данными или распределения задач.
В приложении #TravelPoints интеграции будут использоваться для получения списка стран по GraphQL API и для отображения списка стран в мобильном приложении по REST API.
Погружайтесь в интеграции через пример с такси - картинки в этом посте 🚖
#ИнтеграцииGA
👍19🔥7❤4
💥 Самые важные виды API + примеры 💥
API (Application Programming Interface) — это программный интерфейс, через который программы могут обмениваться данными и функциональностью между собой тем способом, который предусмотрели разработчики. Интеграция систем становится более безопасной и стандартизованной за счет использования API.
Есть 5 наиболее популярных видов API:
1. REST API
2. SOAP API
3. GraphQL
4. gRPC
5. WebSocket
Разберёмся с каждым из них на примере с машиной 🚗
Сущность “Машина” - это марка, модель и год выпуска. Также для машин в системе будем хранить уникальные номера - id.
Как выглядит машина в разных API, как добавить машину в систему или посмотреть данные о ней через API?
🔺REST API (Representational State Transfer) - архитектурный стиль взаимодействия компонентов системы. REST API использует HTTP запросы для создания, чтения, обновления и удаления данных (CRUD операции).
Формат сообщений: JSON, XML, HTML, TEXT, JavaScript. JSON является более популярным из-за его легкости и компактности.
◾️ Создание машины
Тело ответа JSON, после того, как запись в БД будет создана и ей будет присвоен уникальный id.
◾️ Получение машины c id=457
Тела запроса нет.
Тело ответа JSON:
Методы выбирают по принципу: GET = получать, POST = создать, PATCH = изменить и т.д.
Идея JSON: слева перед двоеточием имя параметра, справа значение.
🔺SOAP API - протокол обмена структурированными сообщениями в реализации веб-сервисов. Считается устаревающим. До сих пор много где используется в банках и государственных учреждениях, в старых системах.
Формат сообщений: XML.
Продолжение 👇
API (Application Programming Interface) — это программный интерфейс, через который программы могут обмениваться данными и функциональностью между собой тем способом, который предусмотрели разработчики. Интеграция систем становится более безопасной и стандартизованной за счет использования API.
Есть 5 наиболее популярных видов API:
1. REST API
2. SOAP API
3. GraphQL
4. gRPC
5. WebSocket
Разберёмся с каждым из них на примере с машиной 🚗
Сущность “Машина” - это марка, модель и год выпуска. Также для машин в системе будем хранить уникальные номера - id.
Как выглядит машина в разных API, как добавить машину в систему или посмотреть данные о ней через API?
🔺REST API (Representational State Transfer) - архитектурный стиль взаимодействия компонентов системы. REST API использует HTTP запросы для создания, чтения, обновления и удаления данных (CRUD операции).
Формат сообщений: JSON, XML, HTML, TEXT, JavaScript. JSON является более популярным из-за его легкости и компактности.
◾️ Создание машины
POST /cars
{
"brand": "Tesla",
"model": "Model 3",
"year": 2021
}Тело ответа JSON, после того, как запись в БД будет создана и ей будет присвоен уникальный id.
{
"id": "456",
"brand": "Tesla",
"model": "Model 3",
"year": 2021
}◾️ Получение машины c id=457
GET /cars/457Тела запроса нет.
Тело ответа JSON:
{
"id": "457",
"brand": "Tesla",
"model": "Model Y",
"year": 2022
}Методы выбирают по принципу: GET = получать, POST = создать, PATCH = изменить и т.д.
Идея JSON: слева перед двоеточием имя параметра, справа значение.
🔺SOAP API - протокол обмена структурированными сообщениями в реализации веб-сервисов. Считается устаревающим. До сих пор много где используется в банках и государственных учреждениях, в старых системах.
Формат сообщений: XML.
Продолжение 👇
👍42🔥21❤8
Примеры для SOAP API часто включают SOAP Envelope, который является контейнером для SOAP сообщений.
Запрос на создание машины:
После создания машине присваивается уникальный id=456. Пример ответа:
Теперь, как и для REST API, получение машины c id=457
Пример ответа:
Обратите внимание на перегруженность формата xml. Если в JSON всё аккуратно и человекочитаемо, то в XML, конечно, читаемо, но более перегружено. И это еще простой пример. А еще есть XSD-схема и wsdl 🙂
Но об этом в другой серии постов, если наберем 100🦄 и SOAP вам актуален. Пока GraphQL 😀
#ИнтеграцииGA
Запрос на создание машины:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservices">
<soapenv:Header/>
<soapenv:Body>
<web:CreateCar>
<web:brand>Tesla</web:brand>
<web:model>Model 3</web:model>
<web:year>2022</web:year>
</web:CreateCar>
</soapenv:Body>
</soapenv:Envelope>
После создания машине присваивается уникальный id=456. Пример ответа:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservices">
<soapenv:Header/>
<soapenv:Body>
<web:CreateCarResponse>
<web:carId>456</web:carId>
<web:brand>Tesla</web:brand>
<web:model>Model 3</web:model>
<web:year>2021</web:year>
</web:CreateCarResponse>
</soapenv:Body>
</soapenv:Envelope>
Теперь, как и для REST API, получение машины c id=457
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservices">
<soapenv:Header/>
<soapenv:Body>
<web:GetCarRequest>
<web:carId>457</web:carId>
</web:GetCarRequest>
</soapenv:Body>
</soapenv:Envelope>
Пример ответа:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservices">
<soapenv:Header/>
<soapenv:Body>
<web:GetCarResponse>
<web:car>
<web:id>457</web:id>
<web:brand>Tesla</web:brand>
<web:model>Model Y</web:model>
<web:year>2022</web:year>
</web:car>
</web:GetCarResponse>
</soapenv:Body>
</soapenv:Envelope>
Обратите внимание на перегруженность формата xml. Если в JSON всё аккуратно и человекочитаемо, то в XML, конечно, читаемо, но более перегружено. И это еще простой пример. А еще есть XSD-схема и wsdl 🙂
Но об этом в другой серии постов, если наберем 100🦄 и SOAP вам актуален. Пока GraphQL 😀
#ИнтеграцииGA
🦄135🔥12❤5😱1
😍 GraphQL и отличия от REST 😍
GraphQL — это язык запросов для API-интерфейсов и среда, в которой они выполняются. Понятие "язык запросов" в контексте GraphQL относится к систематизированному способу формирования запросов к серверу (Backend).
В основе GraphQL лежит идея, что клиент (пользователь или другая система), взаимодействующий с вашим API, может точно указать, какие данные ему нужны, используя специально разработанный для этого язык запросов, не похожий ни на один из ранее существующий, но вполне понятный для освоения.
GraphQL отличается от традиционных API, где формат ответа предопределён и не может быть изменён клиентом.
В GraphQL клиент сам задаёт требования что ем нужно вернуть.
Формат запроса: язык GraphQL.
Формат ответа: традиционный JSON.
Пример про машины:
- В REST API вызывая метод “Получить информацию о машине” GET /cars/457 я получу весь список полей, который заложен в ответ на уровне сервера, т.е. id, марка, модель и год выпуска.
- В GraphQL клиент, например, разработчик мобильного приложения, может оптимизировать свой запрос и получать только нужные данные с сервера. Для машины это может быть только id и марка. Зависит от задачи и экрана, где нужно отображать данные.
🙃 Отличия от REST API
Одно из ключевых отличий между GraphQL и REST заключается в способе обработки запросов и ответов.
В REST для каждого объекта данных, который вы хотите получить или обновить, обычно требуется отдельный endpoint.
и др.
GraphQL, напротив, использует единый endpoint, через который клиенты могут отправлять различные запросы, точно указывая, какую информацию они хотят получить или изменить.
Лучше посмотреть примеры 👇 Но сначала на получение данных, т.к. с созданием сложнее.
#ИнтеграцииGA
GraphQL — это язык запросов для API-интерфейсов и среда, в которой они выполняются. Понятие "язык запросов" в контексте GraphQL относится к систематизированному способу формирования запросов к серверу (Backend).
В основе GraphQL лежит идея, что клиент (пользователь или другая система), взаимодействующий с вашим API, может точно указать, какие данные ему нужны, используя специально разработанный для этого язык запросов, не похожий ни на один из ранее существующий, но вполне понятный для освоения.
GraphQL отличается от традиционных API, где формат ответа предопределён и не может быть изменён клиентом.
В GraphQL клиент сам задаёт требования что ем нужно вернуть.
Формат запроса: язык GraphQL.
Формат ответа: традиционный JSON.
Пример про машины:
- В REST API вызывая метод “Получить информацию о машине” GET /cars/457 я получу весь список полей, который заложен в ответ на уровне сервера, т.е. id, марка, модель и год выпуска.
{
"id": "457",
"brand": "Tesla",
"model": "Model Y",
"year": 2022
}
- В GraphQL клиент, например, разработчик мобильного приложения, может оптимизировать свой запрос и получать только нужные данные с сервера. Для машины это может быть только id и марка. Зависит от задачи и экрана, где нужно отображать данные.
{
"id": "457",
"brand": "Tesla",
}
🙃 Отличия от REST API
Одно из ключевых отличий между GraphQL и REST заключается в способе обработки запросов и ответов.
В REST для каждого объекта данных, который вы хотите получить или обновить, обычно требуется отдельный endpoint.
GET /cars/{carId}
POST /cars
PATCH /users/{userId}и др.
GraphQL, напротив, использует единый endpoint, через который клиенты могут отправлять различные запросы, точно указывая, какую информацию они хотят получить или изменить.
Лучше посмотреть примеры 👇 Но сначала на получение данных, т.к. с созданием сложнее.
#ИнтеграцииGA
❤30👍9
😍 GraphQL: примеры и создание новых данных через мутации 😍
Продолжим наш пример с машиной, чтобы показать структуру GraphQL, и как он упрощает взаимодействие с данными.
Запрос на получение машины в GraphQL с id=457
>> Вариант 1 - полные данные:
Пример ответа:
>> Вариант 2 - только марка (бренд):
Пример ответа:
А теперь про создание и изменение данных в GraphQL:
В REST любой запрос кроме GET может привести к изменению данных в БД на сервере. GraphQL чем-то похож в этом плане на REST. Для получения данных мы запрашиваем их, описывая в запросе то, что хотим увидеть в ответе.
А вот любые методы GraphQL, вызывающие изменения данных, должны быть явным образом определены через мутации.
Структура:
Продолжение скоро 😉
#ИнтеграцииGA
Продолжим наш пример с машиной, чтобы показать структуру GraphQL, и как он упрощает взаимодействие с данными.
Запрос на получение машины в GraphQL с id=457
>> Вариант 1 - полные данные:
query {
car(id: "457") {
brand
model
year
}
}
Пример ответа:
{
"data": {
"car": {
"brand": "Tesla",
"model": "Model 3",
"year": 2021
}
}
}
>> Вариант 2 - только марка (бренд):
query {
car(id: "457") {
brand
}
Пример ответа:
{
"data": {
"car": {
"brand": "Tesla"
}
}
}
А теперь про создание и изменение данных в GraphQL:
В REST любой запрос кроме GET может привести к изменению данных в БД на сервере. GraphQL чем-то похож в этом плане на REST. Для получения данных мы запрашиваем их, описывая в запросе то, что хотим увидеть в ответе.
А вот любые методы GraphQL, вызывающие изменения данных, должны быть явным образом определены через мутации.
Структура:
mutation {
createObject(input: {...}) {
object {
….
}
}
}
Продолжение скоро 😉
#ИнтеграцииGA
🔥30❤9👍2🥰1😱1
😍 GraphQL: Мутации в GraphQL 😍
Мутации — это способ изменения данных на сервере, аналогично тому, как вы бы использовали методы
Мутации выполняются явно и должны быть указаны в запросе как таковые через слово
Давайте рассмотрим пример, где нам нужно добавить новую машину в базу данных через GraphQL. Мы определим мутацию createCar, которая принимает параметры для новой машины Tesla, Model 3, 2021 и возвращает информацию о созданной машине.
Пример запроса GraphQL:
Обращаем внимание на состав данных в мутации:
🔸 В
🔸 Во второй части мутации мы описываем объект данных
Пример ответа GraphQL:
Ответ содержит данные о новой машине, включая присвоенный ей идентификатор
Это позволяет клиенту немедленно обновить своё состояние, используя возвращённые данные, без необходимости выполнять дополнительный запрос для получения информации о созданном объекте. Такое можно делать и в REST API, но в GraphQL именно клиент задает каждый раз то, что хочет видеть в ответе на запрос, связанный с изменением данных. В REST ответ фиксированный.
GraphQL наиболее ценен, когда надо оптимизировать объем передаваемых данных и в условиях часто меняющихся требований.
#ИнтеграцииGA
Мутации — это способ изменения данных на сервере, аналогично тому, как вы бы использовали методы
POST, PUT, PATCH, DELETE в REST API. Мутация позволяет клиенту GraphQL API явно указать, какие действия он хочет выполнить с данными, включая создание новых объектов, обновление существующих и их удаление.Мутации выполняются явно и должны быть указаны в запросе как таковые через слово
mutation. Это отличает их от запросов на получение данных, где используется ключевое слово query.Давайте рассмотрим пример, где нам нужно добавить новую машину в базу данных через GraphQL. Мы определим мутацию createCar, которая принимает параметры для новой машины Tesla, Model 3, 2021 и возвращает информацию о созданной машине.
Пример запроса GraphQL:
mutation {
createCar(input: {
brand: "Tesla",
model: "Model 2",
year: 2021
}) {
car {
id
brand
model
year
}
}
}
Обращаем внимание на состав данных в мутации:
🔸 В
createCar мы описываем input - входные параметры, которые пользователь передаёт на вход.🔸 Во второй части мутации мы описываем объект данных
car, который будет создан, и какие данные из него мы хотим получить. В данном случае полный набор.Пример ответа GraphQL:
{
"data": {
"createCar": {
"car": {
"id": "456",
"brand": "Tesla",
"model": "Model 3",
"year": 2021
}
}
}
}
Ответ содержит данные о новой машине, включая присвоенный ей идентификатор
id=456. Это позволяет клиенту немедленно обновить своё состояние, используя возвращённые данные, без необходимости выполнять дополнительный запрос для получения информации о созданном объекте. Такое можно делать и в REST API, но в GraphQL именно клиент задает каждый раз то, что хочет видеть в ответе на запрос, связанный с изменением данных. В REST ответ фиксированный.
GraphQL наиболее ценен, когда надо оптимизировать объем передаваемых данных и в условиях часто меняющихся требований.
#ИнтеграцииGA
❤18👍10🔥5
☑️ Задачи в проекте с GraphQL ☑️
В проекте #TravelPoints есть несколько основных процессов связанных с интеграциями.
🔺 Просмотр полного списка стран
На экране отображается полный список стран. Вверху списка до 5 стран, которые пользователь недавно посетил, что определяется за счет смены отметки "visited" на экране просмотра страны.
Интеграция: загрузка полного списка стран из внешней системы countries.trevorblades + отметки о сохранении в избранное или посещении на стороне Travel Points.
🔺 Просмотр списка сохраненных стран
В нижней части экрана расположен TabBar, в котором есть иконка "сохраненное". По нажатию на эту иконку к списку отображаемых стран применяется фильтр и на экране отображаются только ранее сохраненные пользователем страны.
Интеграция: то же, что и для полного списка стран, но с примененным фильтром.
🔺 История посещенных стран
В нижней части экрана расположен TabBar, в котором есть иконка "история". По нажатию на эту иконку к списку отображаемых стран применяется фильтр "только посещенные", с признаком visited,
Интеграция аналогично предыдущему пункту.
🔺 Просмотр подробной информации о стране
По нажатию на страну в списке можно перейти к просмотру детальной информации о стране, включающей возможности создать и просмотреть заметки о стране, отметить посещение и сохранить страну в избранное.
Интеграция: нужно вызвать метод внешней системы, отвечающий за возврат полной информации о стране.
👉 API-документация GraphQL:
🔗 https://countries.trevorblades.com/
Посмотрите документацию. Во встроенной консоли для тестирования API попробуйте вызывать методы и получать данные, с учетом освоенной теории по GraphQL.
Пример запроса, который точно сработает:
Вернет список стран с кодом, названием и списком языков.
Как построить запрос, чтобы к этим параметрам вернули еще флаг, валюту и континент? Смотрите документацию и предлагайте варианты запроса в комментариях 😉
#ИнтеграцииGA #TravelPoints
В проекте #TravelPoints есть несколько основных процессов связанных с интеграциями.
🔺 Просмотр полного списка стран
На экране отображается полный список стран. Вверху списка до 5 стран, которые пользователь недавно посетил, что определяется за счет смены отметки "visited" на экране просмотра страны.
Интеграция: загрузка полного списка стран из внешней системы countries.trevorblades + отметки о сохранении в избранное или посещении на стороне Travel Points.
🔺 Просмотр списка сохраненных стран
В нижней части экрана расположен TabBar, в котором есть иконка "сохраненное". По нажатию на эту иконку к списку отображаемых стран применяется фильтр и на экране отображаются только ранее сохраненные пользователем страны.
Интеграция: то же, что и для полного списка стран, но с примененным фильтром.
🔺 История посещенных стран
В нижней части экрана расположен TabBar, в котором есть иконка "история". По нажатию на эту иконку к списку отображаемых стран применяется фильтр "только посещенные", с признаком visited,
Интеграция аналогично предыдущему пункту.
🔺 Просмотр подробной информации о стране
По нажатию на страну в списке можно перейти к просмотру детальной информации о стране, включающей возможности создать и просмотреть заметки о стране, отметить посещение и сохранить страну в избранное.
Интеграция: нужно вызвать метод внешней системы, отвечающий за возврат полной информации о стране.
👉 API-документация GraphQL:
Посмотрите документацию. Во встроенной консоли для тестирования API попробуйте вызывать методы и получать данные, с учетом освоенной теории по GraphQL.
Пример запроса, который точно сработает:
query {
countries {
code
name
languages {name, code}
}
}
Вернет список стран с кодом, названием и списком языков.
Как построить запрос, чтобы к этим параметрам вернули еще флаг, валюту и континент? Смотрите документацию и предлагайте варианты запроса в комментариях 😉
#ИнтеграцииGA #TravelPoints
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6👏5🔥1