当前位置: 首页 > 知识库问答 >
问题:

jersey@PathParam:如何传递包含多个斜杠的变量

长孙德惠
2023-03-14
package com.java4s;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

@Path("/customers")
public class RestServicePathParamJava4s {
    @GET
    @Path("{name}/{country}")
    @Produces("text/html")
    public Response getResultByPassingValue(
                @PathParam("name") String name,
                @PathParam("country") String country) {

        String output = "Customer name - "+name+", Country - "+country+"";
        return Response.status(200).entity(output).build();

    }
}

在web中。xml我已经将URL模式指定为rest,并在RestServicePathParamJava4s中指定。java我们将类级路径指定为客户,方法级路径指定为国家

所以最终的URL应该是

http://localhost:2013/RestPathParamAnnotationExample/rest/customers/Java4/USA

响应应显示为

Customer name - Java4, Country - USA

如果我给出下面给出的2输入,它显示错误。如何解决这个问题?

http://localhost:2013/RestPathParamAnnotationExample/rest/customers/Java4:kum77./@.com/USA` 

这里Java4: kum77./@. com这是一个字符串,它包含正斜杠。如何通过使用@PathParam或任何我需要使用Multivalue edMap的东西来接受这个。如果有人知道这个,请帮助我。如果有人知道什么是Multivalue edMap,给我一个简单的例子?

共有1个答案

蓝夕
2023-03-14

对于路径表达式,需要使用正则表达式

@Path("{name: .*}/{country}")

这将允许name模板中的任何内容,最后一段将是国家/地区

测验

@Path("path")
public class PathParamResource {

    @GET
    @Path("{name: .*}/{country}")
    @Produces("text/html")
    public Response getResultByPassingValue(@PathParam("name") String name,
                                            @PathParam("country") String country) {

        String output = "Customer name - " + name + ", Country - " + country + "";
        return Response.status(200).entity(output).build();
    }
}

$curlhttp://localhost:8080/api/path/Java4:kum77./@.com/USA客户名称-Java4:kum77。com,国家-美国

$curlhttp://localhost:8080/api/path/Java4/USA
客户名-Java4,国家-美国

 类似资料:
  • 以下是我在泽西使用的方法签名,当我调试/运行程序时,我收到错误: [[致命]方法公共javax。ws。rs.core。响应com。xxxx。xxxxx。Xxxxx。xxxxx。资源类com上的xxxxxxxx(java.lang.String、java.lang.String、java.lang.String、javax.ws.rs.container.ContainerRequestContex

  • 问题内容: 我需要按以下方式处理请求: 它应该接受介于和之间的值中的任何类型的字符?。请注意,将位于的值将是一个值,而不是操作的名称。 例如:其中第一个请求应将用户重定向到页面(因为那是名称),第二个请求应将用户lkikf连同参数名称的值一起重定向到页面。 我有下面的控制器来处理它,但是问题是当我的地址中有/时,控制器无法处理它。 我用下面的正则表达式不起作用。 问题答案: 你必须创建两个方法,然

  • 我需要按以下方式处理请求: 它应该接受位于和之间的值中的任何类型的字符。请注意,将位于那里的值将是一个单独的值,而不是一个动作的名称。 我使用了以下正则表达式,但这不起作用。

  • 本文向大家介绍Python中的左斜杠、右斜杠(正斜杠和反斜杠),包括了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用技巧和注意事项,需要的朋友参考一下 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下

  • 使用Jacksons的ObjectMapper,如果我尝试将已经包含反斜杠的字符串转换为字节数组,然后将该字节数组更改回字符串,则输出包含一个额外的反斜杠。以下代码显示了该问题 有没有办法配置ObjectMapper,使mapper#writeValueAsBytes方法不会将字符串Test\string更改为Test\\string?有没有其他方法可以使用Jackson/ObjectMapper