Зачем нужны и как работают блоки GET
Когда вы разрабатываете фронтенд, вам неизбежно понадобится запускать различные БП на бэкенде. Чтобы запустить БП необходимо обратиться к его эндпоинту. Для этого, для каждого эндпоинта AppMaster создает блок Server Request. Эти блоки имеют те же входные и выходные поля, что и связанный эндпоинт и служат способом его запуска.
Блоки GET, в соответствии с принципами REST API, должны получать какие-либо данные. Чаще всего с помощью блоков GET получают данные из модели в БД (все, или по определенным критериям).
Как и все блоки Server Request, каждый блок GET привязан к своему эндпоинту. Url эндпоинта отображается в названии блоков.
Помните, что AppMaster генерирует основные эндпоинты автоматически. Но вы также можете создавать свои БП и эндпоинты для них, и, соответственно, свои блоки Server Request.
Входные и выходные поля блока GET
Входные:
- Endpoint ID – служит для определения, к какому эндпоинту должен обращаться блок. Это поле устанавливается автоматически;
- _offset – смещение, позволяет указать, начиная с какой записи, блок будет получать информацию; формат integer;
- _limit – количество записей, которое загружает блок. По умолчанию равен 25, максимум за один раз – 500; формат integer;
- _sort_order – для этого поля подходят два значения asc – прямой порядок сортировки и desc – обратный порядок; формат string;
- _sort_by – здесь можно определить, по какому полю модели данных будет сортироваться список; формат string;
_sort_order и _sort_by – работают только в связке;
- Ids – список id записей. Позволяет получить записи по конкретным id; формат array integer;
- _search – поиск заданного значения в модели данных; формат string;
- _search_exact – включение/выключение поиска точного совпадения; формат boolean;
- _search_in – поиск по определенным полям; формат array string;
Далее идут поля модели данных. Они предназначены для поиска по конкретному полю. Форматы соответствуют форматам в модели данных.
Разберем подробнее поля, связанные с поиском.
- _search – ищет совпадения по всей модели данных и будет находить их вне зависимости от поля, в котором находится значение. Например, зададим в поле _search значение John. Если в модели данных у одной записи значение поля name будет John, а у другой – значение поля email будет [email protected], то поиск найдет обе эти записи.
- _search_exact – включение этого поля означает, что в результаты будут попадать записи, полностью совпадающие с запросом.
Запрос | _search_exact | Результат |
John | False | John, Johny, [email protected] |
John | True | John |
- _search_in – здесь можно задать поля, в которых должен проводиться поиск. Например, если мы хотим проводить поиск только по именам и не учитывать случаи, когда присутствует имя в email, можно использовать _search_in и искать только по полю name.
Поля моделей данных для поиска
Эти поля предназначены для поиска по модели данных. Главная разница между ними и полями search в том. что они могут принимать разные значения, в отличие от search, который принимает только формат string.
Выходные:
- _success – успешно ли прошло получение данных; формат boolean;
- _httpcode – код ответа на запрос; формат integer;
- _error – текст ошибки, если есть; формат string;
- Data – полученные записи; формат array model;
- Count – количество найденных записей. Не зависит от параметра _limit; формат integer.
Отдельного внимания заслуживает поле _with. Оно появляется в тех блоках, где запрос идет к связанным моделям данных. Поле позволяет получить данные не только из той модели данных, к которой идет запрос, но и из связанных с ней моделей данных.
Рассмотрим поле _with на примере приложения, которое хранит список книг и их жанры.
Создадим две модели данных: book и category. В book добавим поле book_name, а в category добавим поле category_name.
Создадим связь между ними. Проведем ее от category к book и зададим тип связи has_many, т.к.одна категория может относиться к разным книгам.
Теперь во вкладке веб-приложения настроим загрузку данных в таблицы book и category, а так же добавим записи в эти таблицы.
Сейчас связанные данные не отображаются в таблицах. Чтобы исправить это, нужно поле _with.
Настроим это поле в блоке Get у каждой таблицы.
Теперь откроем наше приложение, и убедимся, что запрос выполняется, а в таблице появляются нужные данные.