➡️ Элементы пагинации (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
Когда мы работаем со списками в 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
👍40❤11🔥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
Проверим, насколько вы хорошо усвоили материал по эндпоинтам REST API.
Попробуйте ответить на вопросы, а затем сравнить с предложенными ответами 👇
1. Какой метод сделать для регистрации нового пользователя?
✅ POST
+ Метод POST используется для создания новых ресурсов - регистрация = создание пользователя.
+ users является сущностью, к которой относится запрос.
2. Как получить список авторов с фильтрацией по жанру?
Фильтрация по жанру в данном случае не является частью основного ресурса.
✅ GET .../api/public/v1/authors?genre=fiction
+ Query-параметры позволяют удобно передавать фильтры, такие как genre=fiction. Значение жанра может отличаться, также их можно перечислить через запятую. Это делает запрос гибким и легко расширяемым.
3. Как получить список заказов пользователя?
То, что это заказы конкретного пользователя, понимает за счет того, что запрос подписан авторизацией.
✅ GET .../api/admin/v1/users/123/orders
Для админского метода выстроена иерархия от пользователя к заказу для просмотра заказов внутри информации о пользователе.
✅ GET .../api/admin/v1/orders?userId=123
В общем списке заказов в админке можно применить фильтр по пользователю.
4. Как сделать метод отмены заказа пользователем?
Больше подходит, чтобы показать удаление неоплаченного заказа.
✅ 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👍6⚡2😁1
😨 Headers в REST API: что это и зачем? 😨
Headers – заголовки запроса и ответа в протоколе HTTP.
Это дополнительные системные параметры, которыми надо обмениваться. Обычно сквозные для всех методов в API, то есть применяются сразу для всех методов.
Помогают:
✔️ Определять, как обрабатывать запрос.
✔️ Передавать метаинформацию о данных (системную).
✔️ Настраивать взаимодействие между клиентом и сервером.
Проще всего разобраться с Headers, познакомившись с набором стандартных значений, которые можно нагло копировать в требования к вашим методам REST API 🙂
📌 Request Headers - для запросов
◽️ Authorization
Используется для передачи токенов доступа, ключей API или других данных для авторизации. Используется для проверки доступа к API-методам.
◽️ Content-Type
Сообщает серверу, в каком формате отправлены данные.
Если сервер не знает в каком формате переданы данные, то он не сможет обработать запрос.
Если его нет в API, то сервер обычно ждёт JSON, если в документации не указано иное.
◽️ Cache-Control
Управляет кэшированием данных на клиенте.
Полезно для работы с экономией трафика.
◽️ Ключи идемпотентности - название придумываете сами
Это уникальный идентификатор для запросов, который помогает избежать дублирования. Например, при повторной отправке платежного запроса сервер проверяет ключ и не создаёт дубль.
Подробнее в подкасте
◽️ Часовые пояса
Когда система работает в разных регионах, важно учитывать часовые пояса и их можно передавать как обязательные заголовки во всех запросах.
Стандартные названия из моего опыта:
📌 + помним про Response Headers (заголовки ответов)
Полные подборки стандартных Headers:
🔗 Wikipedia
🔗 MDN
Правильно выбранные Headers помогают удобно передавать все системные параметры для обмена данными, которые не важны для бизнес-логики и алгоритмов работы API-методов.
#RestApiGA
Headers – заголовки запроса и ответа в протоколе HTTP.
Это дополнительные системные параметры, которыми надо обмениваться. Обычно сквозные для всех методов в API, то есть применяются сразу для всех методов.
Помогают:
✔️ Определять, как обрабатывать запрос.
✔️ Передавать метаинформацию о данных (системную).
✔️ Настраивать взаимодействие между клиентом и сервером.
Проще всего разобраться с Headers, познакомившись с набором стандартных значений, которые можно нагло копировать в требования к вашим методам REST API 🙂
📌 Request Headers - для запросов
◽️ Authorization
Используется для передачи токенов доступа, ключей API или других данных для авторизации. Используется для проверки доступа к API-методам.
Authorization: Bearer <token>
◽️ Content-Type
Сообщает серверу, в каком формате отправлены данные.
Если сервер не знает в каком формате переданы данные, то он не сможет обработать запрос.
Если его нет в API, то сервер обычно ждёт JSON, если в документации не указано иное.
Content-Type: application/json
Content-Type: application/xml
◽️ Cache-Control
Управляет кэшированием данных на клиенте.
Полезно для работы с экономией трафика.
Cache-Control: no-cache
◽️ Ключи идемпотентности - название придумываете сами
Это уникальный идентификатор для запросов, который помогает избежать дублирования. Например, при повторной отправке платежного запроса сервер проверяет ключ и не создаёт дубль.
Подробнее в подкасте
Idempotency-Key: <unique-key>
◽️ Часовые пояса
Когда система работает в разных регионах, важно учитывать часовые пояса и их можно передавать как обязательные заголовки во всех запросах.
Стандартные названия из моего опыта:
Time-Zone: UTC+3
X-Time-Zone: UTC+3
📌 + помним про Response Headers (заголовки ответов)
Полные подборки стандартных Headers:
Правильно выбранные Headers помогают удобно передавать все системные параметры для обмена данными, которые не важны для бизнес-логики и алгоритмов работы API-методов.
#RestApiGA
Please open Telegram to view this post
VIEW IN TELEGRAM
❤28🔥13👍10❤🔥3😱1
GetAnalyst - REST API _ Гайд по JSON.pdf
10.2 MB
🔥 Книга по JSON в REST API 🔥 + история про собеседования
Нанимаем системного аналитика на проект, где нужно работать с web-, mobile и backend.
Есть публичная REST API-документация. Опубликована на официальном сайте. Протестировать бесплатно нельзя, почитать бесплатно можно.
Все приложения есть в открытом доступе, можно зарегистрироваться и посмотреть что внутри до собеседования.
Для технической части собеседования не придумываем ничего заумного, а даём реальную задачу из проекта:
👌 Тип метода GET, POST, PUT, PATCH или DELETE выбирают правильно почти всегда.
👌 URL делают, не всегда так, как ожидаем. Но хотя бы понимаем, где придётся доучить.
🥲 А вот когда дело доходит до JSON, то тут мы можем смело принимать решение о продолжении диалога.
🔴 👉 Типичные ошибки и недочеты в JSON:
- Незнание типов данных
- Дата и время - про стандарты ISO не слышали
- Умение самостоятельно описать только "плоские" объекты данных, без вложенных структур
- JSON запроса и ответа одинаковые, либо один из них теряется в случае методов, отличных от GET
- Неумение работать со списками - массивы
- Нейминг (именование полей) порой заставляет и смеяться, и плакать
- Отсутствие знаний базовых структур для методов
+ Незнание инструментов, что сразу показывает отсутствие опыта
Это самое-самое, что бросается в глаза с первых минут.
Давайте не будем допускать эти ошибки? 🙂
Руководство по JSON, прикрепленный к посту - ваш будущий помощник и ориентир в проектировании API 📘
В нем собрала самое ключевое, чтобы не валить ваши собеседования и качественно выполнять свою работу 🙌
-----
P.S.
И большой намек к этому посту:
🚨 REST API-документацию компании можно изучить до собеседования, если она есть в открытом доступе.
Это полезно, чтобы понять, что будут ожидать на практике, и посмотреть на подходы работы в компании.
-----
Запоминаем, сохраняем, пользуемся 🙏
#RestApiGA
Нанимаем системного аналитика на проект, где нужно работать с web-, mobile и backend.
Есть публичная REST API-документация. Опубликована на официальном сайте. Протестировать бесплатно нельзя, почитать бесплатно можно.
Все приложения есть в открытом доступе, можно зарегистрироваться и посмотреть что внутри до собеседования.
Для технической части собеседования не придумываем ничего заумного, а даём реальную задачу из проекта:
Есть экран веб-приложения.
Перед кандидатом скриншот с уже реализованной функциональностью в системе.
Нужно описать REST API метод(-ы) для работы этого экрана.
👌 Тип метода GET, POST, PUT, PATCH или DELETE выбирают правильно почти всегда.
👌 URL делают, не всегда так, как ожидаем. Но хотя бы понимаем, где придётся доучить.
🥲 А вот когда дело доходит до JSON, то тут мы можем смело принимать решение о продолжении диалога.
🔴 👉 Типичные ошибки и недочеты в JSON:
- Незнание типов данных
- Дата и время - про стандарты ISO не слышали
- Умение самостоятельно описать только "плоские" объекты данных, без вложенных структур
- JSON запроса и ответа одинаковые, либо один из них теряется в случае методов, отличных от GET
- Неумение работать со списками - массивы
- Нейминг (именование полей) порой заставляет и смеяться, и плакать
- Отсутствие знаний базовых структур для методов
+ Незнание инструментов, что сразу показывает отсутствие опыта
Это самое-самое, что бросается в глаза с первых минут.
Давайте не будем допускать эти ошибки? 🙂
Руководство по JSON, прикрепленный к посту - ваш будущий помощник и ориентир в проектировании API 📘
В нем собрала самое ключевое, чтобы не валить ваши собеседования и качественно выполнять свою работу 🙌
-----
P.S.
И большой намек к этому посту:
Это полезно, чтобы понять, что будут ожидать на практике, и посмотреть на подходы работы в компании.
-----
Запоминаем, сохраняем, пользуемся 🙏
#RestApiGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥58❤🔥11👍6🤩4❤2
🟢🟠 Инструменты системного аналитика для работы с API 🟡🟣
Работа с API — важный навык для системного аналитика.
👉 Для работы с интеграциями:
Системному аналитику необходимо убедиться, что API внешней системы будет работать именно так, как описано в документации (если она есть, а если нет - то составить), чтобы затем предоставить информацию разработчикам.
Тестирование API внешних систем в специализированных инструментах помогает выявить проблемы в работе внешних систем на ранних стадиях разработки, несоответствия документации реальности, а также проверить полноту данных и доступность сервисов в целом.
👉 Работа с Backend и мобильными командами:
Нужно уметь самому с нуля проектировать и документировать API, желательно с использованием специализированных инструментов как Postman и Swagger, а не только в Confluence-подобных системах.
Список инструментов, которые помогают системным аналитикам в тестировании и документировании API:
🟠 Postman
🟡 SoapUI
🟣 Insomnia
🟢 Swagger
Подробности в картинках к посту ☝️
👉 В конце рекомендую поработать с инструментами
Делюсь своими практическими гайдами, с которыми вы сможете поработать с инструментами сами, с понятными пошаговыми инструкциями:
▫️ Postman: Практическое руководство с примером тестирования открытого API
▫️ GraphQL — знакомство на практике через Postman [пошаговая инструкция]
▫️ Postman: навык тестирования REST API за вечер
+ скоро добавлю для вас Swagger.
#RestApiGA #ИнтеграцииGA
Работа с API — важный навык для системного аналитика.
👉 Для работы с интеграциями:
Системному аналитику необходимо убедиться, что API внешней системы будет работать именно так, как описано в документации (если она есть, а если нет - то составить), чтобы затем предоставить информацию разработчикам.
Тестирование API внешних систем в специализированных инструментах помогает выявить проблемы в работе внешних систем на ранних стадиях разработки, несоответствия документации реальности, а также проверить полноту данных и доступность сервисов в целом.
👉 Работа с Backend и мобильными командами:
Нужно уметь самому с нуля проектировать и документировать API, желательно с использованием специализированных инструментов как Postman и Swagger, а не только в Confluence-подобных системах.
Список инструментов, которые помогают системным аналитикам в тестировании и документировании API:
🟠 Postman
🟡 SoapUI
🟣 Insomnia
🟢 Swagger
Подробности в картинках к посту ☝️
👉 В конце рекомендую поработать с инструментами
Делюсь своими практическими гайдами, с которыми вы сможете поработать с инструментами сами, с понятными пошаговыми инструкциями:
▫️ Postman: Практическое руководство с примером тестирования открытого API
▫️ GraphQL — знакомство на практике через Postman [пошаговая инструкция]
▫️ Postman: навык тестирования REST API за вечер
+ скоро добавлю для вас Swagger.
#RestApiGA #ИнтеграцииGA
🔥34❤10👍6😁2
Прошедшую неделю официально объявляю неделей офферов, а январь - месяцем активного найма 💪
После того, как я несколько раз написала в канале, что для нас действительно важно и приятно знать, что вы растёте в карьере с GetAnalyst, то нам в ЛС стали чаще приходить новости об офферах 🎉
Только за эту неделю 5 радостных сообщений почти по всем программам ⚡️ включая начинающих СА
👉 Так что если кто-то думает, что в январе "мертвый месяц" для найма и все только-только отходят от праздников - это не так.
А еще я вижу, как команда трудится над оформлением историй студентов за конец прошлого года. Их много!
Душа радуется за всех вас!
И появляется еще больше неугасающего желания делиться и создавать лучших специалистов в IT!
а не умельцев проходить собеседования
Одну историю и несколько ярких сообщений публикую в картинках к посту.
Спасибо каждому из вас за время на обратную связь ❤️🔥
Искренне ваши,
Екатерина Ананьева,
и команда GetAnalyst
#студентыGetAnalyst
После того, как я несколько раз написала в канале, что для нас действительно важно и приятно знать, что вы растёте в карьере с GetAnalyst, то нам в ЛС стали чаще приходить новости об офферах 🎉
Только за эту неделю 5 радостных сообщений почти по всем программам ⚡️ включая начинающих СА
👉 Так что если кто-то думает, что в январе "мертвый месяц" для найма и все только-только отходят от праздников - это не так.
А еще я вижу, как команда трудится над оформлением историй студентов за конец прошлого года. Их много!
Душа радуется за всех вас!
И появляется еще больше неугасающего желания делиться и создавать лучших специалистов в IT!
Одну историю и несколько ярких сообщений публикую в картинках к посту.
Спасибо каждому из вас за время на обратную связь ❤️🔥
Искренне ваши,
Екатерина Ананьева,
и команда GetAnalyst
#студентыGetAnalyst
🔥14👍4❤🔥3❤2😁2🥰1👏1