API. Архитектура. Веб-сервисы
3.36K subscribers
239 photos
50 videos
10 files
276 links
Канал для тех, кто хочет начать карьеру в IT или прокачать свои знания

Автор: Глеб Учитель glebteach.ru и его IT-команда.
🔹Обучили более 2000 учеников
🔹Подходит ли тебе проектирование интеграций/веб-сервисов? Узнаешь в боте @studyit_help_bot
Download Telegram
В IT все разборки только по-взрослому 😅
🔥26😁9
Как GitHub перешёл с REST на GraphQL и что из этого получилось?👆

Рассказываю в аудио классный случай из практики!

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

🎧Слушайте подкаст @openstudyit
🔥9👍3
Есть интересная задача по проектированию API + ПОДАРОК для вас🎁

Выбор оптимального API для обновления данных пользователя

Представьте, вы работаете над REST API для приложения управления пользователями. Вам нужно спроектировать конечную точку (endpoint) для обновления информации о пользователе по его уникальному идентификатору (user_id).

❗️Требования:
✔️Обновление данных пользователя должно быть частичным: клиент может отправить только те поля, которые нужно изменить

✔️Необходимо придерживаться RESTful стиля и использовать правильные HTTP методы

✔️Сервер должен обрабатывать запросы безопасно и эффективно

У вас есть три варианта реализации:
1️⃣ HTTP метод: PUT
URL: /users/{user_id}
Тело запроса:
{
"name": "New Name"
}

2️⃣ HTTP метод: PATCH
URL: /users/{user_id}
Тело запроса:
{
"name": "New Name"
}

3️⃣ HTTP метод: POST
URL: /updateUser
Тело запроса:
{
"user_id": 123,
"name": "New Name"
}

Какой из вариантов является наиболее правильным с точки зрения RESTful практик для частичного обновления данных пользователя и ПОЧЕМУ?

Пишите вариант, который считаете верным, в комментариях и почему👇

Первые 5 подписчиков, кто ответит верно - получат крутой подарок от нас🎁
🔥10👍4👏2
This media is not supported in your browser
VIEW IN TELEGRAM
👍8👏1
Да, это был метод PATCH для частичного обновления🔥

Почему? (здесь найдете вопрос)👇

Метод PATCH предназначен специально для частичного обновления ресурса.

✔️Клиент может отправить только те поля, которые нужно изменить, без необходимости предоставлять полное представление ресурса.

✔️ Это соответствует требованию о частичном обновлении данных пользователя.

RESTful URL:

☑️ URL /users/{user_id} правильно идентифицирует ресурс пользователя по его уникальному идентификатору.

☑️ Это соответствует RESTful практике использования путей для обращения к ресурсам.

Часто используете этот метод в интеграции?
🔥8
Patch это понятно)
А можете рассказать другое пожалуйста, почему в данной формулировке и вводных put не походит как ответ в вашем понимании?
Я на чем хочу сконцентрировать внимание:
То что вы не сказали какая метамодель у обьекта user. Если он у вас состоит из только имени и id (который передается в url). То put тут тоже работает.

Да ,действительно, если бы модель юзера состояла из больших атрибутов - то однозначный ответ в этом кейсе был бы Patch.

Я ошибаюсь?
🔥7👍1
Отличный вопрос - классная обратная связь от подписчика👆

Давайте разберёмся, почему в этом случае лучше использовать PATCH, а не PUT, даже если у нас у пользователя только id и name.

❗️Повторим разницу между PATCH и PUT

☑️ PUT:

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

☑️ PATCH:

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

Почему в нашем случае PUT может не подходить?

1️⃣ Риск потери данных

Если используешь PUT и отправляешь только name, не указывая другие поля, сервер может подумать, что ты хочешь заменить весь ресурс новым, который содержит только name.
Остальные поля могут быть удалены или сброшены, что приведёт к потере данных.

2️⃣ Соответствие стандартам (на них всё же опираются некоторые разработчики 😁)

По стандартам HTTP PUT должен использоваться для полной замены ресурса.
Использовать PUT для частичного обновления — это нарушение этих принципов и может привести к непредсказуемому поведению.

3️⃣ Будущие изменения

Сейчас у пользователя только id и name, но позже могут добавиться другие поля (например, email, age).
Если с самого начала используешь PUT для частичного обновления, потом придётся менять логику на клиенте, чтобы отправлять все поля, иначе новые могут быть потеряны.

Пример проблемы с PUT на пальцах👇

Представьте, что сейчас такая модель пользователя:
{
"id": 123,
"name": "Alice"
}

Вы отправляете запрос:
PUT /users/123
Content-Type: application/json

{
"name": "Bob"
}

Ожидаемый результат:
Изменится только name, остальные поля останутся.

Фактический возможный результат:
Сервер заменяет ресурс новым, где только name указано.
Получаем:
{
"id": null, // или id удаляется
"name": "Bob"
}
...Поле id потеряно, что плохо.


РЕЗЮМЕ

Подписчик прав, что в очень простом случае, когда у пользователя только id и name, использование PUT может показаться нормальным.

НО❗️
С точки зрения стандартов и будущего развития вашего API, PATCH — возможно более оптимальный выбор.

Это обеспечит безопасность данных и устойчивость API к изменениям.

Согласны?
👍27
This media is not supported in your browser
VIEW IN TELEGRAM
Визуализация - зачем интеграция API😅

Коллеги, не сдерживайтесь в комментариях))
2😁37👍8
⚡️Дайджест ТОПовых постов нашего канала за сентябрь, которые вам понравились больше всего:

Разбираем код ошибки 422 в HTTP

Как работать с шаблоном Circuit Breaker

Нужно ли API Data аналитикам?

Дилемма любого ITшника😅

☝️ Вы можете поделиться каналом — используйте эту ссылку.
Сохраняйте полезную информацию, чтобы не потерять.

Благодарности за подборку контента принимаем в виде реакций на этот пост 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
107🔥9👍4
Нужно ли тестировщикам знать API?
И как разобраться с брокерами сообщений?

Отличные вопросы прилетели в бот👆

Рассказываем обо всем по порядку🔽

☑️ Тестировщики&API

Да и еще раз ДА! Скажем больше, это не просто полезный, но и необходимый навык, особенно если вы работаете в области автоматизированного тестирования.

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

Наш курс охватывает ключевые протоколы (HTTP, TCP, HTTPS), инструменты для тестирования API (Postman, SOAP UI, cURL) и основные технологии (REST, gRPC, GraphQL и другие). Это даст вам полное представление о том, как спроектированы API и как их эффективно тестировать.

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

☑️ Брокеры сообщений

На нашем курсе вы сможете не только понять, но и попрактиковаться в работе с брокерами сообщений, такими как RabbitMQ и Apache Kafka.

Курс предлагает и теоретическое знакомство с их устройством, и рассмотрение реальных паттернов асинхронного обмена сообщениями (Request-Reply, Publish-Subscribe).

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

Обожаем вопросы от вас👍

Задавайте еще)
94👍7🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
93👍8
Курс для джунов? Или навыки API для более опытных ребят?

Подходит ВСЕМ - в видео пояснил, почему👆

На обучении мы двигаемся от самых основ к более сложным темам, закрепляя все практикой:

1️⃣ основы по работе интернета

2️⃣ база по API (как, зачем, и почему)

3️⃣ проектирование API (REST, SOAP, и другие стили)

4️⃣ интеграция через брокеры сообщений - RabbitMQ и Kafka

5️⃣ алгоритм проектирования (паттерны, OpenAPI, документация и т.д.)

6️⃣ создание распределенных систем (микросервисы)

7️⃣ построение карьерного трека (составление резюме, подготовка к собеседованию)

Практики много, но домашки несложные, честно😉

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

После обучения наши ученики становятся на уровень middle специалиста😎

Вдруг кто забыл) У нас есть классный БОТ, где вы можете пройти БЕСПЛАТНЫЕ УРОКИ и протестировать начинку курса сами👍
82🔥12
Полиморфизм в Open API (Swagger): что ЭТО и с чем его едят?🤯

Ребята, мы подготовили для вас статью-урок, где простым языком с примерами разобрали работу OpenAPI по этапам.

Переходите по ссылке, изучайте и ждем вас в комментариях - обсудим👇
https://dzen.ru/a/ZyCd8EEQBGXPZiIy
91🔥14
Думаем Практикум провести... Вы ЗА вообще?

Получили хорошую обратную связь от вас по поводу статьи-урока Полиморфизм в Open API (Swagger).
Многие даже пришли к нам учиться сразу, что радует еще больше👍

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

‼️6 ноября в 19.00 по мск Глеб Учитель проведет Практикум "Полиморфизм в Open API (Swagger)".

Это будет именно формат живого эфира с практическими заданиями, сможете, конечно, и все свои интересующие вопросы задать по теме.

Практикум проведем в закрытом формате❗️
Кто хочет на встречу - ставьте + в комментариях, добавим вас в закрытый чат😎
186🔥27👍7
Вы вообще помните, что у нас завтра Практикум по полиморфизмам?🤯

Уже пошла жара в закрытом чате🔥

❗️Ребята, кто хотел на Практикум и ставил + под этим постом (если еще не успел - велком), мы добавляем вас всех в группу и менеджер рассылает ссылки в личные сообщения (@Raisa_menedjr, @Raisa_it). Проверяйте - никого не потеряем😉

Завтра 6 ноября в 19.00 по мск практикум пройдет в ЗАКРЫТОЙ ГРУППЕ.

Вас ждут разборы, практические задания, примеры работы алгоритма. Короче, все по-взрослому и в формате win-win, чтобы выжать максимум пользы для каждого из вас.

До встречи на Практикуме👍

Поставьте реакцию🔥, кто уже в закрытой группе. Посчитаемся)
158🔥15👍2
У нас тут очень активно🔥
Сегодня в 19:00 по мск начинаем 🔝
22😁6🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Готовность № 1 - скоро погружение в Swagger🔥

Ребятаааа, вы порвали наш чат вопросами и обратной связью. Очень круто👆

Если вы еще не в нашем закрытом чате и не ждете Практикум… Вы не в танцах😅😅😅

И да, лучше подключаться с ноутбука, потому что иначе будет сложно решать задачки во время эфира!

И лучше быть онлайн - запись прошлого эфира не сохранилась… Это, к сожалению, не от нас зависит и телеграмм может решить судьбу записи за нас(

Если вдруг кого потеряли и не добавили в чат - ставьте + в комментариях, успеете присоединиться👇
26🔥13
Когда о твоем обучении говорят в чужих чатах... Это успех?) Как считаете?

#ученикиговорят

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


Каждое слово в самое сердечко❤️ Особенно "есть немного халявы". Это так от души - самый креативный коммент🔥

И Практикум по Swagger вчера прошел на ура! Хоть и телеграм был против нас... Кто знает, тот поймет😂

Запись практикума уже в закрытом канале. Ознакомиться с программой курса и тарифами можно ЗДЕСЬ.
80🔥11👍3