如何在JAX-RS中将路径参数转换为类?

时间:2017-10-12 17:54:09

标签: java jax-rs jpa-2.0

假设代码是,

@Path("/app/{resource}")    //Suppose resource comes as Apple or Mango.
@Produces(value=MediaType.APPLICATION_JSON)    
public class AppResource { 

    @GET
    public Response getResource(@PathParam("resource") String resource) {
    // Here want to convert resource to Apple or Mango class so that I can create a List<Apple> or List<Mango>.
    }
}

基本上我想要一个通用List作为List&lt; Apple&gt;或列表&lt;芒果&gt;取决于uri,{resource}中的任何内容。

1 个答案:

答案 0 :(得分:0)

如果您希望代码具有明确的List<Apple>List<Mango>列表,那么您需要编写如下代码:

@GET
public Response getResource(@PathParam("resource") String resource) {
    List<?> list;
    switch (resource) {
        case "apples":
            list = getApples();
            break;
        case "mangos":
            list = getMangos();
            break;
        default:
            return Response.status(Status.NOT_FOUND).build();
    }
    return Response.ok(list);
}

private List<Apple> getApples() {
    List<Apple> appleList = new ArrayList<>();
    // add apples
    return appleList;
}

private List<Mango> getMangos() {
    List<Mango> mangoList = new ArrayList<>();
    // add mangos
    return mangoList;
}

default语句中的switch子句可确保/app/sailboats之类的请求失败,并显示正常的404“找不到页面”错误。