您的位置:首页 > 产品设计 > UI/UE

RESTEasy:@FormParam、@PathParam、@QueryParam、@HeaderParam、@CookieParam、@MatrixParam说明

2016-06-20 10:26 681 查看
在第一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) {
...
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: