Play Framework: как связать сложный запрос REST с методом Controller - PullRequest
2 голосов
/ 03 февраля 2012

Работа над REST API с Play Framework.

У меня есть требование для поддержки RESTful-запроса , содержащего "заказ" с несколькими "позициями".

С точки зрения "данных POST" я вижу это следующим образом: (разделено на несколько строк для ясности)

OrderId=123&OrderType=regular&
ItemNum=1&ItemID=78&quantity=2&discount=20&
ItemNum=2&ItemID=70&quantity=1&
ItemNum=3&ItemID=75&quantity=1&discount=10

Обратите внимание, что у меня есть проблема, требующая, чтобы все "позиции" приходили сполный набор данных.В приведенном выше примере 2-й товар не имеет скидки.Поскольку я не могу «заставить» разработчиков, использующих API, работать с моей собственной «оболочкой», я хочу оставить некоторую гибкость.

Я бы хотел сопоставить это с чем-то вроде:

method (int orderID, string orderType, Item [] items)

Однако мне не удалось найти что-то подходящее в документации.

Какой правильный путь?Должен ли я создать свой собственный анализатор данных HTTP-запроса?Любой альтернативный способ форматирования данных POST - при условии, что он соответствует рекомендациям REST - также приемлем.

Спасибо, Макс

1 Ответ

2 голосов
/ 03 февраля 2012

Чтобы отобразить массив объектов Pojo, вам нужно поместить item. перед объектом item. Так же, как вы отображаете объект в форме. Затем вы должны указать, что это массив с использованием стандартного синтаксиса массива.

Я бы сделал что-то вроде следующего

orderId=123&orderType=regular&
item[0].ItemNum=1&item[0].ItemID=78&item[0].quantity=2&item[0].discount=20&
item[1].ItemNum=2&item[1].ItemID=70&item[1].quantity=1&
item[2].ItemNum=3&item[2].ItemID=75&item[2].quantity=1&item[2].discount=10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...