Grails: Как экспортировать общее количество коллекций из index.gson для сущностей домена, представленных как REST API через @Resource - PullRequest
0 голосов
/ 09 октября 2019

Я пишу интерфейс ReactJS, который использует act-admin , который ожидает, что определенные виды информации будут возвращаться API REST, которые он вызывает. Одним из критериев перечисления ресурса является то, что общее количество ресурса также возвращается в ответе JSON API REST. Чтобы заставить мое приложение REST API Grails сделать это, действие index для RestfulController, сгенерированного из объектов моего Домена, помеченных @Resource, должно не только возвращать коллекцию ресурсов, но также и «количество», указывающее общее количествоуказанных ресурсов. Это можно сделать несколькими различными способами, заключив исходный список ресурсов в data и добавив дополнительное поле JSON с именем count, или он может возвратить указанное «количество» через заголовок HTTP.

Очевидный способ сделать это - сгенерировать и изменить файл index.gson для каждого из моих доменных объектов. Но я буду писать много повторяющегося кода (с разными вызовами GORM в каждом). Следующим очевидным способом является указание атрибута superClass для аннотации @Resource для каждой из моих сущностей в Домене, и, используя наследование, напишите базовый класс, такой как RestfulControllerWithTotalInIndex, из которого каждая из моих сущностей в Домене будет иметь подкласс.

Но затем мне пришлось заглянуть в реализацию по умолчанию RestfulController и выяснить, что вызов respond в конце index уже содержит модель, которая включает в себя счетчик. В частности, код выглядит следующим образом:

    def index(Integer max) {
        params.max = Math.min(max ?: 10, 100)
        respond listAllResources(params), model: [("${resourceName}Count".toString()): countResources()]
    }

Но даже при этом значение по умолчанию index.gson на самом деле не render это ${resourceName}Count поле.

То, что я ищу, - это способ (может быть, где-то конфигурация), с помощью которого я могу представить уже упомянутый model в фактическом выводе JSON моего REST API, надеюсь, без написания большого количества дубликатов. код. Что касается дублирующего кода, мне также было интересно, нужно ли мне что-то писать, могу ли я сделать это только один раз и позволить нескольким объектам домена повторно использовать один и тот же index.gson «шаблон».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...