当前位置: 首页 > 面试题库 >

将来自REST调用的@PathParam值存储在列表或数组中

燕钟展
2023-03-14
问题内容

我的函数如下所示:

    @PUT
    @Path("property/{uuid}/{key}/{value}")
    @Produces("application/xml")    
    public Map<String,ValueEntity> updateProperty(@Context HttpServletRequest request,
            @PathParam("key") String key,
            @PathParam("value") String value,
            @PathParam("uuid") String uuid) throws Exception {
                                       ...
                             }

我必须对其进行修改,因此它接受来自REST调用的不确定(或许多)键-值对列表,例如

@Path("property/{uuid}/{key1}/{value1}/{key2}/{value2}/{key3}/{value3}/...")

是否可以将它们存储在数组或列表中,所以为了避免这种情况,我不会列出数十个@PathParams和参数:

@PathParam("key1") String key1,
@PathParam("key2") String key2,
@PathParam("key3") String key3,

问题答案:

可能是重新思考此设计的好机会。通过使用/s,我们以一种表示的方式/进行了尝试,每种方法都试图查找不同的资源。键/值对(在URL的上下文中)主要用于查询参数或矩阵参数。

如果/property/{uuid}是通往主要资源的路径,而我们只想向客户端提供一些参数以访问该资源,则可以允许矩阵参数或查询参数

矩阵参数 (在请求网址中)看起来像

/12345;key1=value1;key2=value2;key3=value3

获取值的资源方法可能类似于

@GET
@Path("/property/{uuid}")
public Response getMatrix(@PathParam("uuid") PathSegment pathSegment) {
    StringBuilder builder = new StringBuilder();

    // Get the {uuid} value
    System.out.println("Path: " + pathSegment.getPath());

    MultivaluedMap matrix = pathSegment.getMatrixParameters();
    for (Object key : matrix.keySet()) {
        builder.append(key).append(":")
               .append(matrix.getFirst(key)).append("\n");
    }
    return Response.ok(builder.toString()).build();
}
  • 看到 PathSegment

查询参数 (在请求网址中)可能类似于

/12345?key1=value1&key2=value2&key3=value3

获取值的资源方法可能类似于

@GET
@Path("/property/{uuid}")
public Response getQuery(@PathParam("uuid") String uuid, 
                         @Context UriInfo uriInfo) {

    MultivaluedMap params = uriInfo.getQueryParameters();
    StringBuilder builder = new StringBuilder();
    for (Object key : params.keySet()) {
        builder.append(key).append(":")
               .append(params.getFirst(key)).append("\n");
    }
    return Response.ok(builder.toString()).build();
}
  • 看到 UriInfo

区别在于Matrix参数可以嵌入到路径段中,而查询参数必须放在URL的末尾。您还会注意到语法上的一些差异。

更新

同样查看PUTin方法的签名,似乎您正在尝试使用路径作为要更新的值来更新资源,因为我没有在实体主体的方法中看到任何参数。放置时,您应该在实体主体中发送表示,而不是作为路径段_或_ 参数发送。



 类似资料:
  • 有没有一种规范的方法来存储sql表列中的数组/列表?我正在尝试以下操作:我有“Building”和“Room”对象,Building对象已设置为其字段。如何用SQL描述这种关系(建筑物有很多房间)? 我是数据库设计的新手,所以,如果太琐碎,请不要生气。 附言:如果有人能解释“很多公共汽车司机使用很多公共汽车”的关系,反之亦然,那就太好了。

  • 问题内容: 我是Java开发的新手,我来自C#.net,正在开发android应用程序。 我正在寻找与Java中的IDictionary相同的Java中使用的键值列表。 谢谢 http://codingdict.com/questions/14826http://codingdict.com/questions/148269 问题答案: Java具有Hashtable和HashMap 看到Hash

  • 我的文本文件如下所示 我使用下面的代码片段将文本逐行存储在数组列表中,并将整个文件显示为输出。 但我只想显示三列TMAX,TMIN,DMAX。

  • 问题内容: 在我的应用程序中,我得到了带有描述性预定义标签的“文章”(类似于帖子/推文/文章):即“困难”,“简单”,“红色”,“蓝色”,“业务”等 这些可用标签存储在一个表中,称为包含所有可用标签的“标签”。 每篇文章都可以使用多个标签进行标记,这些标签可以通过自定义管理界面进行编辑。 可能很容易将每个实体的标签捆绑到每个标签ID的字符串化数组中,并将其与文章记录一起存储在我的“文章”表中: 尽

  • 我是的初学者。现在,我正在尝试开发一个移动应用程序,但在将数据存储到数组列表中时遇到了一些问题。例如,数据如下所示 现在我使用的是一个名为的第三方库。要使用此库,必须以这种方式存储数据, 在这个中,id的道具是一个字符串,标签也是一个字符串。那么我如何像这样单独存储我的数据呢?例如,像这样 我已经尝试用地图的方法做到这一点。代码将是 但还是不行。 代码如下:

  • 问题内容: 在此先感谢您的帮助。 好吧,这就是我的情况。我有一个Web系统,该系统基于超声波计创建的样本进行一些与噪声相关的计算。最初,数据库仅存储这些计算的结果。但是现在,我被要求也自己存储样本。每个样本只是一个300或600个数字的列表,每个数字都有一个小数。 因此,我想到的最简单的方法是在表中添加一列,该列存储给定样本的所有计算。此列应包含数字列表。 那么我的问题是:将这一数字列表存储在单列