栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

对于相同的REST方法,我们可以有多个@Path注释吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对于相同的REST方法,我们可以有多个@Path注释吗?

您不能

@Path
在单个方法上具有多个注解。它将导致“重复注释”语法错误。

但是,有多种方法可以有效地将两个路径映射到一个方法。

@Path批注中的正则表达式

@Path
JAX-RS中的注释接受参数,可以使用正则表达式限制其值。

此注释:

@Path("a/{parameter: path1|path2}")

将使同时针对

/a/path1
和的请求都可以访问该方法
/a/path2
。如果您需要使用子路径,请使用斜杠转义:
{a:path1\/subPath1|path2\/subPath2}

使用重定向状态代码提供响应

或者,您可以设置重定向。这是通过定义另一个子资源在Jersey(JAX-
RS的参考实现)中进行操作的方法。这只是一个示例,如果您喜欢使用其他方法来处理重定向,请随时使用它。

@Path("basepath")public class YourbaseResource {  //this gets injected after the class is instantiated by Jersey      @Context  UriInfo uriInfo;  @Path("a/b")  @GET  public Responce method1(){    return Response.ok("blah blah").build();  }  @Path("a/b/c")  @GET  public Response method2(){    UriBuilder addressBuilder = uriInfo.getbaseUriBuilder();    addressBuilder.path("a/b");    return Response.seeOther(addressBuilder.build()).build();  }}

使用Servlet过滤器重写URL

如果您经常需要这种功能,建议您使用Servlet过滤器拦截传入的请求,并即时重写路径。这应该有助于您将所有重定向都放在一个地方。理想情况下,您可以使用现成的库。

UrlRewriteFilter
只要您拥有BSD许可证就可以解决问题(请查看其Google代码网站以获取详细信息)

另一个选择是通过在Java应用程序前面设置代理来处理此问题。您可以设置一个Apache服务器以提供基本的缓存和重写规则,而不必使Java代码复杂化。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452703.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号