【问题标题】:Difference between RESTEasy and JAX-RSRESTEasy 和 JAX-RS 之间的区别
【发布时间】:2012-09-18 07:01:53
【问题描述】:

什么是 Resteasy? RESTEasy 和 JAX-RS 有什么区别? @PathParam@QueryParam有什么区别?

【问题讨论】:

  • 你的最后一个问题是重复的of this question
  • 尽量避免每个“问题”问两个问题,因为这会鼓励不连贯的答案; @PathParam@QueryParam 的问题完全是另一个问题。

标签: java jax-rs resteasy


【解决方案1】:

根据its homepageRESTEasy 是

...JAX-RS 规范的完全认证且可移植的实现。

所以 JAX-RS 是一个规范,说明了在 Java 中实现 REST API 的库应该是什么样子,而 RESTEasy 是该规范的一个实现。

这实际上意味着 JAX-RS 上的任何文档也应该 1:1 应用于 RESTEasy。

【讨论】:

    【解决方案2】:

    查询参数是从请求URI查询参数中提取出来的,通过方法参数参数中的javax.ws.rs.QueryParam注解来指定。

    例子:

    @Path("smooth")
    @GET
    public Response smooth(
        @DefaultValue("2") @QueryParam("step") int step,
        @QueryParam("minm") boolean hasMin,
        @QueryParam("test") String test
        ) { ... }
    
    URL: http://domain:port/context/XXX/smooth?step=1&minm=true&test=value
    

    URI 路径参数是从请求URI中提取出来的,参数名对应@Path类级注解中指定的URI路径模板变量名。 URI 参数使用方法参数参数中的 javax.ws.rs.PathParam 注释指定

    例子:

    @Path("/{userName}")
    public class MyResourceBean {
    ...
    @GET
    public String printUserName(@PathParam("userName") String userId) {
        ...
    }
    }
    
    
     URL: http://domain:port/context/XXX/naveen
    

    这里,naveen 取用户名(路径参数)

    【讨论】:

      【解决方案3】:

      JAX-RS 是一组没有实际实现的接口和类,属于 javax.ws.rs.* 包(它们是 Java SE 6 的一部分,由 Oracle 提供)。

      RESTEasy 以及 JerseyApache CXF 是该 JAX-RS 类的开源实现。

      在编译期间,您只需要 JAX-RS。在运行时,您只需要其中一种实现。

      【讨论】:

        【解决方案4】:

        还请注意,JAX-RS 只是服务器端规范,RESTEasy 对其进行了扩展,通过 RESTEasy JAX-RS 客户端框架将 JAX-RS 带到客户端。

        参数信息, What is the difference between @PathParam and @QueryParam 这里有一些关于参数的要点, When to use @QueryParam vs @PathParam - Gareth 的回答

        【讨论】:

        • 仅供参考:JAX-RS 2.0 包含客户端规范。
        猜你喜欢
        • 2014-02-03
        • 2017-08-14
        • 2013-05-08
        • 2019-09-25
        • 1970-01-01
        • 2016-06-27
        • 2020-09-08
        • 2012-02-12
        • 1970-01-01
        相关资源
        最近更新 更多