我一直在研究Java/Jersey中的小型Web服务,它从XML文件中包含的客户端读取用户信息列表。我目前在所有这些功能中除了一个方面外:在URI中使用多个参数来表示拉取多组用户信息或多组客户端信息。我有一个当前有效的版本,但不是最好的方式,也不是项目描述所要求的。在Java中以REST风格处理多个参数
目前,我的代码如下所示:
@Path("Client/{client}/users")
public class UserPage
{
@GET
@Produces(MediaType.TEXT_HTML)
public String userChoice(@PathParam(value = "client") final String client)
{****Method here which handles a list of 'users'****}
@GET
@Path("{name}")
@Produces(MediaType.TEXT_HTML)
public String userPage(@PathParam(value = "client") final String client, @PathParam(value = "name") final String name)
{****Method here which handles 'user' information****}
第一种方法是从“{}客户”的URI表示的“客户”处理用户的列表。第二种方法在URI中传递由“{name}”表示的“用户”信息。两者都会以一个参数运作。目前,为了处理多个'用户',我将“{name}”逗号分隔为“Client/Chick-Fil-A/users/Phil,Bradley”。我可以在使用@PathParam并解析后创建这些'用户'的数组,但我认为这不是处理这种情况的最佳方式,项目描述需要不同的东西。
有没有一种方法可以通过格式为“Client/Chick-Fil-A; cd = Phil,Bradley”的URI完成相同的任务? (The; cd =是什么给了我最大的麻烦。) 我还需要能够将这种格式用于多个客户端,即“Client; cd = Chick-Fil-A,Subway/users; cd = Phil,Bradley ”。
编辑:澄清项目: 客户信息包含在6个单独的文件中。这些文件中的每一个都具有相同的3个用户(这是有效的概念验证)。我需要能够提取不同的信息子集,例如,McDonalds和Chick-Fil-A的用户Phil,或McDonalds的用户Phil和Peter,或所有客户的名为Peter的用户等。
尽管如此,在我看来这不会影响我的目的。我需要能够从多个客户端访问多个用户,而这些查询似乎没有被这些查询处理。 – ZKSteffel 2011-05-25 19:24:04
哦,我明白了,如何将客户端名称移动到查询参数呢? 所以你有类似/ users?company =&user = ? –
Alvin
2011-05-25 19:33:54
在与我的项目中的其他人交谈之后,我们决定尽量远离查询参数。他们可能会为这个特定的代码工作,但正如我所提到的,这个代码更像是一个概念证明。我们要编写的实际代码会更复杂,因此URI中的查询将变得过于复杂。我更期待更有效地使用@PathParam,因为@MatrixParam仅适用于URI的最后一部分。 – ZKSteffel 2011-05-25 21:11:37