Правильный / лучший способ вернуть коллекцию из api отдыха

0

Хорошо, вот моя дилемма. (извините за длинное объяснение, просто пытаясь быть настолько ясным, насколько это возможно для этого случая)

Я работаю над restfull api, созданным с помощью Play Framework. Дело в том, что я нашел два возможных метода для рендеринга ответа JSON от Play. renderJSON и renderJSON2.

Допустим, я делаю запрос GET/студентам

В моем проекте этот запрос должен возвращать массив студентов, это может быть один студент или многие из них. Дело в том, что в конце концов я делаю что-то вроде этого

renderJSON(studentList)

И studentList - это java.utils.List. Так что json, который я получаю в интерфейсе, это что-то вроде этого.

{
    paging: {
        total: 2
    }-
    results: [2]
        0:  {
            id: "33333333"
            email: "[email protected]"
            name: "Bob"
        }-
        1:  {
            id: "444444444"
            email: "[email protected]"
            name: "Jhon"
        }-
-
}

Как вы можете видеть, то, что rednerJSON делает здесь, состоит в том, чтобы поместить список учеников внутри объекта, который имеет свойства "подкачки" и "результаты", где результаты на самом деле я хочу.

Теперь, с другой стороны, существует другой метод, называемый renderJSON2, который я тестировал, и в этом же случае дает мне этот результат.

[1]
    0:  {
        id: "33333333"
        email: "[email protected]"
        name: "Bob"
    }
[2]
    0:  {
        id: "444444444"
        email: "[email protected]"
        name: "Jhon"
    }

Как вы можете видеть с помощью этого метода, я получаю список простых учеников как ответ, не встраиваемый в другой объект.

Мой вопрос пришел, когда я начал использовать модуль Restangular совместно с AngularJs, потому что у restangular есть специальные методы для создания вызовов api, которые возвращают один единственный объект или коллекцию объектов. Вы даже получаете сообщение об ошибке из-за рестатулярности в консоли браузера, если он ожидает один объект и получает коллекцию или наоборот.

Поэтому, если я использую только renderJSON(), тогда я бы не стал лучшим из рестанглярного, так как это дает мне прямой способ получить и привязать коллекцию объектов к моей модели angularJs. Это заставляет меня думать, что в случае методов api, которые всегда возвращают коллекции, я должен использовать renderJSON2. Единственное, что заставляет меня хотеть использовать renderJSON, - это то, что атрибут "подкачки" полезен при ограничении результатов ответа.

Каков наилучший способ справиться с этим? Должен ли я использовать renderJSON во всех случаях и, возможно, даже останавливать использование restangular или использовать оба метода render в зависимости от метода api? Есть ли для этого стандарт?

Спасибо заранее и извините за длинный пост.

  • 0
    results должны быть массивом, а не одним большим объектом
Теги:
playframework
rest
restangular

1 ответ

0
Лучший ответ

Вероятно, вам нужно использовать renderJSON и добавить ответный перехватчик в ретрансляционный провайдер, чтобы развернуть полученный объект и сохранить данные разбивки на страницы:

https://github.com/mgonto/restangular/#my-response-is-actually-wrapped-with-some-metadata-how-do-i-get-the-data-in-that-case

  • 0
    О, я не видел этот раздел в документации Restrict. Я посмотрю. Заранее спасибо!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню