在第一RESTEasy教程我们已经学习了基本的Web服务和休息我们已经测试了一个简单的REST风格的Web服务。在本教程中,我们将
显示如何将Web应用程序元素(形式参数,查询参数和更多)为REST风格的Web服务。
你可以使用下面的注释绑定HTTP请求REST风格的Web服务:

@FormParam
@PathParam
@QueryParam
@HeaderParam
@CookieParam
@MatrixParam

让我们探索所有可能的相互作用。

@FormParam

@formparam可以用来注入web表单的参数为REST风格的Web服务。

下面是一个例子:

在这里,我们提交一个后请求包含两个参数的电子邮件和密码
是转化为参数的“E”和“P”的登录方法。
这里是完整的例子:

<form method="POST" action="login">
Email Address: <input type="text" name="email"><br>
Password: <input type="text" name="password">
<input type="submit">
</form>
@Path("/")
public class LoginService
{
  @POST
  @Path("login")
  public String login(@FormParam("email") String e, @FormParam("password") String p) { 
    return "Logged with " + e + " " + p;
  }
}

作为一种替代方法,您可以在类级别上绑定参数电子邮件和密码,如果您需要在不同的其他参数重新使用相同的参数,可以使用它是有用的
服务方法。

public class User {
@FormParam("email")
private String email; @FormParam("password")
private String password;
}

你需要修改相应的方法:

 @POST
@Path("login")
public String login(@Form User form) {
return "Logged with " + form.email + " " + form.password;
}

@PathParam

@pathparam标注绑定一个路径段资源的方法参数的值。例如,下面的方法将拦截HTTP GET  http://server:port/login/12345

“12345”@pathparam转换为字符串“id”

@Path("/")
public class LoginService
{
@GET
@Path("login/{zip}")
public String login(@PathParam("zip") String id) {
return "Id is " +id;
}
}

作为@formparam,你可以嵌入@pathparam声明在类级别上,如果你喜欢。

@QueryParam

@queryparam  标注绑定一个路径段资源的方法参数的值。例如,下面的方法将拦截HTTP GET  http://server:port/login?zip=12345 和
将查询参数 “zip”  注入到方法参数  “zip”

@Path("/")
public class LoginService
{
@GET
@Path("login/{zip}")
public String login(@QueryParam("zip") String zip) {
return "Id is " +id;
}
}

@queryparam可以方便快捷使用defaultValue标注以便你能如果没有查询参数是通过避免空指针异常。

 @GET
@Path("login/{zip}")
public String login(@DefaultValue("11111") @QueryParam("zip") String zip) {
return "Id is " +id;
}

作为@formparam,你可以嵌入@pathparam声明在类级别上,如果你喜欢。

@HeaderParam

@headerparam  标注提取  HTTP标头( HTTP header)并将它绑定到一个方法的参数。

例子:

@GET
public String callService(@HeaderParam("User-Agent") String whichBrowser) {
...
}

@CookieParam

@cookieparam注释读取信息存储为一个cookie,并将它绑定到一个方法的参数。例子:

@GET
public String callService(@CookieParam("sessionid") String sessionid) {
...
}

@MatrixParam

@matrixparam注释可以用来绑定包含多个   property (属性)=value(值)   方法参数表达式。例如,假设你要调用一个网址   http://server:port/login?name=francesco&surname=marchioni

@GET
public String callService(@MatrixParam("name") String name,
@MatrixParam("surname") String surname) {
...
}

RESTEasy:@FormParam、@PathParam、@QueryParam、@HeaderParam、@CookieParam、@MatrixParam说明的更多相关文章

  1. jax-rs中的一些参数标注简介(@PathParam,@QueryParam,@MatrixParam,@HeaderParam,@FormParam,@CookieParam)

    先复习一下url的组成: scheme:[//[user:password@]host[:port]][/]path[?query][#fragment] jax-rs anotation @Path ...

  2. 2.restEasy中@PathParam和@QueryParam的区别

    例如代码: @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) public T query(@PathParam( ...

  3. RESTful和JAX-RS

    一.简介 Java Web有很多成熟的框架,主要可以分为两类Web Application和Web Services.用于Web Application的框架包括官方的Servlet/JSP, JST ...

  4. 关于使用spring mvc或者resteasy构建restful服务的差别与比较

    resteasy 是 jboss的一个开源java api for restful service(JSR 311,sun 2008年发布,最新GA版本是2.0, JAX-RS 2.0 (JSR-33 ...

  5. Spring boot中使用springfox来生成Swagger Specification小结

    Rest接口对应Swagger Specification路径获取办法: 根据location的值获取api   json描述文件 也许有同学会问,为什么搞的这么麻烦,api json描述文件不就是h ...

  6. @RequestParam,@PathParam,@PathVariable,@QueryParam注解的使用区别

    获取url模板上数据的(/{id})@DefaultValue 获取请求参数的(包括post表单提交)键值对(?param1=10&param2=20).可以设置defaultValue JA ...

  7. RestEasy简介

    RestEasy简介 RestEasy技术说明 简介 RESTEasy RESTEasy是JBoss的一个开源项目,提供各种框架帮助你构建RESTful Web Services和RESTful Ja ...

  8. RESTEasy常用注解

    一.@Path,标注资源类或方法的相对路径          Path参数的形式有三种:          1.固定值          2.纯正则表达式          3.固定值和正则表达式的混 ...

  9. Restful中 @RequestParam,@PathParam,@PathVariable等注解区别

    @RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @P ...

随机推荐

  1. ASP.NET - 多级分类

    表结构: 表数据: 最终效果: 前端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehin ...

  2. Eclipse Workspace Unavailable

    开启Eclipse 提示: Workspace Unavailable: Workspace in use or cannot be created, choose a different one. ...

  3. Android SDK Manager安装报错

    安装出错了,上网百度一大堆说法,又说版本兼容问题的,有说http换https的,我这个菜鸟真搞不明白,自己捣腾一下午总算弄上去了! 问题: 安装完Eclipse和ADT却无法更新SDK. 启动Andr ...

  4. cryptography

    密码关还是有很多变态的题的,整理一下力所能及的吧. Circular Crypto(Asis-CTF2013) 这题只给了一张图片 仔细看一下就知道,这是几个单独的环,把它们分别整理出来.因为看着眼花 ...

  5. 微信JS-SDK说明文档

    http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html http://jsfiddle.net/gabrielerom ...

  6. python与其它语言进行比較

    近期python语言貌似比較火, 今天闲来无事,简单的看了下,算是个入门吧.一门语言之所以值得这么多人去学,必然有它的独到之处,以下我们就用python和其它语言做个比較. Pythond VS C# ...

  7. Eclipse背景和匹配出现单词的一些设置

    Eclipse的背景色和关键词的设置这里就不多说了,只说明设置路径: 背景色:[Window]--->[Preference]-->[General]--->[Editors]--- ...

  8. Qt移动版优化后台云服务、支持跨平台开发

    http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5MDE0Mjc4MA==&appmsgid=10000461&itemidx=2&am ...

  9. AS3开发必须掌握的内容

    1.事件机制 2.显示列表 3.垃圾回收 4.常用方法 5.网络通信 6.位图动画 7.渲染机制 8.API结构 9.沙箱机制 10.资源管理 11.内存管理 12.性能优化 13.资源选择 14.安 ...

  10. [容斥原理] zoj 3556 How Many Sets I

    主题链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4535 How Many Sets I Time Limit: 2 ...