我刚学会了如何通过JAXB映射将单个复杂对象发送到基于Jersey的REST Web服务:http://jersey.java.net/nonav/documentation/latest/xml.html#d4e820
但是,我想多做一点。
1)我可以使用一个接受多个复杂对象的方法,所有这些对象都是用JAXB注释的吗?我的意思是:
@POST
public void setPlanetAndGalaxy ( Planet planet, Galaxy galaxy ) { ... }
泽西岛是否允许这样的方法?使用泽西岛/客户端,客户对应部分会是什么样子?到目前为止,我的印象是我应该定义一个类似GalaxyPlanet {planet,galaxy}的包装器,我不太喜欢它。
2)是否可以为POST方法设置数组或集合参数?喜欢在:
@POST
public void setPlanets ( Planet ... planets ) {...}
@POST
public void setPlanets ( Set<Planet> planets ) {...}
@POST
public void setPlanetsAndGalaxies ( Set<Planet> planets, Set<Galaxy> galaxies )
在这三种不同的情况下,客户端代码会如何?
提前感谢您的帮助。 马可。
答案 0 :(得分:2)
您应首先确定您的资源及其关系。如果你打算只处理星系和行星(例如)你的REST API路径就像
/galaxies/ --> You can deal with list of galxies here
/galaxies/{oneGalaxyId} --> One galaxy
/galaxies/{oneGalaxyId}/planets --> Planets of a galaxy
/galaxies/{oneGalaxyId}/planets/{planetId} --> One planet among the planets of a galaxy.
您可以将List
作为POST方法参数处理。
public void setPlanets ( List<Planet> planets ) {...}
>可能无法接受多个复杂类型参数。