Я играюсь с созданием простого приложения, чтобы намочить ноги с помощью Play! 2.0. Я хотел бы иметь возможность обслуживать свои ресурсы в виде XML (на самом деле фида ATOM) и JSON. Я знаю, как это сделать в 1.2.x, но в 2.0 этот способ не работает. Кто-нибудь знает как это делать? Примеры будут высоко оценены.
Как обслуживать XML и JSON с помощью Play! 2.0
Ответы (1)
Для JSON я бы рекомендовал вам взглянуть на этот вопрос Как отобразить ответ JSON в Play framework v2.0 (последняя сборка из GIT)
XML намного проще, так как вы можете просто вызвать return результат с помощью кода, подобного этому:
Ok(Xml(xmlString))
Но более чистый способ использования этой функции, вероятно, состоит в том, чтобы написать свой собственный шаблон под views/xml
, например, mdo.scala.xml
.
@(mdo:MyDomainObject)
<?xml version="1.0" encoding="utf-8"?>
<MyDomainObject>
<name>@mdo.name</name>
<desc>@mdo.desc</desc>
<kws>
@mdo.keywords map { k=>
<kw>k</kw>
}
</kws>
</MyDomainObject>
Затем в вашем контроллере
def c = Action {
val o = MyDomainObject("mine", "for example", List("stack", "over", "flow"))
Ok(views.xml.mdo(o))
}
В противном случае у вас может быть функция toXml, аналогичная toJson, с помощью библиотеки маршалинга.
person
Andy Petrella
schedule
03.01.2012
Я поставлю вам галочку, но вот необходимая вещь, которую вам нужно сделать в дополнение к тому, что вы упомянули. Чтобы быть действительным, ваша первая строка должна быть чем-то вроде
@(posts: Seq[Post])<?xml version="1.0" encoding="utf-8"?>
. Если вы этого не сделаете, ваша первая строка не будет XML-декларацией, как должна. Ошибка? Наверное.
- person geowa4; 04.01.2012
НЕТ эта строка обязательна! Я просто забыл упомянуть об этом. Позвольте мне добавить это. На самом деле это часть спецификации XML, эта строка всегда кодируется в UTF-8 и используется синтаксическими анализаторами, чтобы узнать, какая кодировка используется в документе (и версия XML, но на самом деле она не так часто используется. ..)
- person Andy Petrella; 04.01.2012
Проблема все еще существует в вашем решении. Первая строка вашего сгенерированного XML фактически пуста. Вам нужно поместить объявление сразу после параметров воспроизведения, чтобы оно отображалось правильно. Это ошибка для меня.
- person geowa4; 07.01.2012
Хорошо, вы имеете в виду, что Play! добавляет \n после списка своих параметров ... Мммм, да, это своего рода ошибка, я проверю это и обсужу с ними. Спасибо
- person Andy Petrella; 07.01.2012