RESTful используя Джерси: метод для размещения нескольких объектов
Я пытаюсь разработать метод в моем веб-сервисе RESTful на Java для вставки нескольких записей в БД MySQL с помощью запроса POST. Сгенерированная веб-служба RESTful имеет метод для вставки одного объекта, но не нескольких. Например, он принимает:
<creature>
<sort>Mouse</sort>
<name>Pinky</name>
</creature>
Но нет (что бы я хотел)
<creature>
<sort>Mouse</sort>
<name>Pinky</name>
</creature>
<creature>
<sort>Elephant</sort>
<name>Dumbo</name>
</creature>
Я предполагаю, что вы должны пройтись по сущностям, но не знаете, как это реализовать, будучи позорным новичком.
1 ответ
Просто столкнулся с этим сам. Мне нужны транзакционные сообщения из нескольких элементов, поэтому итераций на клиенте не может быть и речи. Похоже, консенсус заключается в том, что вам нужно использовать отдельный путь от ваших обычных ресурсов:
http://chasenlehara.com/blog/creating-restful-web-services/ (несколько ресурсов)
RESTful способ создать несколько элементов в одном запросе
Я не мог найти много о том, как сделать это с Джерси, хотя. Оказывается, это довольно просто. У вас уже должен быть конвертер нескольких сущностей и классы ресурсов для запросов GET, вам просто нужно указать путь, по которому сервер может предположить, что он их получит:
@Path("creatures")
@Stateless
public class CreaturesResource {
...
@POST
@Consumes({"application/xml", "application/json"})
public Response post(CreatureConverter data) {
Creature entity = data.resolveEntity(em);
postCreature(entity);
}
@POST @Path("multi")
@Consumes({"application/xml", "application/json"})
public Response postMulti(CreaturesConverter data) {
Collection<Creature> entities = data.getEntities();
for (Creature c : entities) {
postCreature(c);
}
}
Тогда вместо публикации
<creature />
в
http://.../resources/creatures
Вы бы опубликовать
<creatures>
<creature />
<creature />
</creatures>
в
http://.../resources/creatures/multi