8

我正在尝试在 Java 中的 RESTful Web 服务中开发一种方法,以使用 POST 请求将多个条目插入 MySQL DB。生成的 RESTful Web 服务具有插入单个实体但不能插入多个实体的方法。例如,它接受:

<creature>
  <sort>Mouse</sort> 
  <name>Pinky</name>
</creature>

但不是(我想要的):

<creature>
  <sort>Mouse</sort> 
  <name>Pinky</name>
</creature>
<creature>
  <sort>Elephant</sort> 
  <name>Dumbo</name>
</creature>

我猜你必须遍历实体,但不确定如何实现它,作为一个可耻的新手。

4

1 回答 1

5

我自己也遇到了这个。我需要多个项目的事务性帖子,因此在客户端上进行迭代是不可能的。共识似乎是您需要使用与正常资源不同的路径:

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
于 2010-12-11T11:03:33.590 回答