【问题标题】:Why trailing slash is cumpolsary for GET request with @path annotation为什么带有 @path 注释的 GET 请求必须使用斜杠
【发布时间】:2017-02-20 11:47:30
【问题描述】:
FUNCTION --1

@Path("/object/") 
public Class TestService {

@GET
@Produces({ "application/json" })
@Path("/{uid}")
public Response hello(@PathParam("uid") String uid){
    System.out.println("UID-->" + uid);
    return Response.status(Response.Status.OK).build();
}

=====================================================================

FUNCTION --2

@Path("/object/")
public Class TestService {

@GET
@Produces({ "application/json" })
@Path("/{uid}/")
public Response hello(@PathParam("uid") String uid){
    System.out.println("UID-->" + uid);
    return Response.status(Response.Status.OK).build();
}

当我点击时:@9​​87654321@

函数--1给出:UID-->null

函数--2给出:UID-->abc

在函数--2 中,我只是在@path 中的uid 之后附加了斜杠。但根据文档,添加前导斜杠不是强制性的。我不明白为什么函数 --1 会返回 null 呢?

【问题讨论】:

    标签: java spring jax-rs uri relative-path


    【解决方案1】:

    在 URI 中尾随 / 是可选的,可以省略。正如你所说在@Path documentation中很清楚:

    为了根据基本 URI 对路径进行绝对化,路径中的前导“/”被忽略,基本 URI 被视为以“/”结尾

    在这种情况下,您正在使用的实现似乎存在缺陷

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      相关资源
      最近更新 更多