【问题标题】:Accept comma separated value in REST Webservice接受 REST Web 服务中的逗号分隔值
【发布时间】:2014-10-25 16:10:00
【问题描述】:

我正在尝试在 REST URI(示例:

http://localhost:8080/com.vogella.jersey.first/rest/todo/test/1/abc,test 

,其中 abc 和 test 是传入的逗号分隔值)。

目前我将此值作为字符串获取,然后将其拆分以获取单个值。 当前代码:

@Path("/todo")
public class TodoResource {
// This method is called if XMLis request
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/test/{id: .*}/{name: .*}")
public Todo getXML(@PathParam("id") String id,
        @PathParam("name") String name) {
    Todo todo = new Todo();
    todo.setSummary("This is my first todo, id received is : " + id
            + "name is : " + Arrays.asList(name.split("\\s*,\\s*")));
    todo.setDescription("This is my first todo");
    TodoTest todoTest = new TodoTest();
    todoTest.setDescription("abc");
    todoTest.setSummary("xyz");
    todo.setTodoTest(todoTest);
    return todo;
}
}

有没有更好的方法来达到同样的效果?

【问题讨论】:

    标签: java web-services rest jersey path-parameter


    【解决方案1】:

    我不确定您要通过服务实现什么目标,但是,使用查询参数获取单个参数的多个值可能会更好。考虑以下网址。

    http://localhost:8080/rest/todos?name=name1&name=name2&name=name3 
    

    这是 REST 服务的代码 sn-p。

    @GET
    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
    @Path("/todos")
    public Response get(@QueryParam("name") List<String> names) {
    
        // do whatever you need to do with the names
    
       return Response.ok().build();
    } 
    

    【讨论】:

    • 我没有改成查询参数的选项,接口已经固定了
    【解决方案2】:

    如果您不知道会得到多少个逗号分隔值,那么您所做的拆分就是我能找到的最佳方法。如果你知道你总是有 3 个值以逗号分隔,那么你可以直接得到这 3 个。 (例如,如果您有 lat、long 或 x、y、z,那么您可以使用 3 个路径变量来获得它。(请参阅下面发布的 stackoverflow 链接之一)

    你可以用矩阵变量做很多事情,但那些需要;和不是您正在使用的键/值对。

    我发现的东西(除了矩阵的东西) How to pass comma separated parameters in a url for the get method of rest service How can I map semicolon-separated PathParams in Jersey?

    【讨论】:

    • 嗨@Joeblade,值的数量不固定。所以我想正如你提到的,没有更好的解决方案。感谢您的意见。
    • 你可以推迟接受,以防其他人(比我的 10 分钟研究更了解球衣)提出更好的答案 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多