RESTful используя Джерси: метод для размещения нескольких объектов - PullRequest
8 голосов
/ 24 августа 2010

Я пытаюсь разработать метод в моем веб-сервисе 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 Ответ

5 голосов
/ 11 декабря 2010

Просто столкнулся с этим сам.Мне нужны транзакционные сообщения из нескольких элементов, поэтому итерации на клиенте не обсуждаются.Похоже, консенсус заключается в том, что вам нужно использовать отдельный путь от обычных ресурсов:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...