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

在第一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) {
...
}

原文地址:https://www.cnblogs.com/523823-wu/p/9194049.html

时间: 2024-11-13 03:31:57

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

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

先复习一下url的组成: scheme:[//[user:[email protected]]host[:port]][/]path[?query][#fragment] jax-rs anotation @PathParam : 在请求拼接在url中的uri中 如:http://localhost:8080/books/1?price=20 假如这个uri books/1的1是表示书的类别 ,那么1就可以认为是@Param @QueryParam: @QueryParam是问号后面的请求参数

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

resteasy 是 jboss的一个开源restful service实现参考.本文假设读者熟悉spring mvc,但是不了解或者没有使用过resteasy的用户. 其实一直以来,笔者实际都是使用spring mvc,对于研究resteasy没有兴趣.至于最近研究resteasy,纯属因为现在公司使用dubbox作为rpc框架,而dubbox使用resteasy作为REST实现库. 简单地说,resteasy核心就是一个servlet前端控制器,理念都一样. 应该来说,resteasy的优势

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

获取url模板上数据的(/{id})@DefaultValue 获取请求参数的(包括post表单提交)键值对(?param1=10&param2=20).可以设置defaultValue JAX-RS @PathParam @QueryParam Spring @PathVariable @RequestParam 有一次的请求是 : http://localhost:8080/system/getMenuListPage?level=0&parent_id=0&_=1532879

spring+resteasy开发webservice服务

有一段时间没有更新博客,主要是最近一段时间自己比较迷茫,一直在思考自己以后的路该怎么走.希望大家也可以给我一些建议,谢谢!好了,回归正题,今天给大家带来的是spring+resteay开发webservice服务,不知道大家是否在这之前接触过webservice,我之前所了解的webservice是使用cxf还有axis2开发的,但是我觉得实现起来比较麻烦,而且不灵活,今天给大家介绍一种比较灵活的提供webservice服务的技术:resteasy.下面我重点讲解的resteasy常用的一些知识

REST 在 Java 中的使用

REST是一种混合的架构风格,它的由来以及它的架构元素在笔者的前一篇文章<REST 架构风格的由来 & 元素>中已经描述了.本篇主要描述一下J2EE对REST的支持. Java是在J2EE6中引入了对REST的支持,即JSR-311(JAX-RS 1.1: The JavaTM API for RESTful Web Services),现在JAX-RS到2.0版本了,对应的是JSR-339,JSR是Java技术规范提案,由JCP组织进行管理.该规范使得使用Java进行开发的人员使用一

Jersey(1.19.1) - Extracting Request Parameters

Parameters of a resource method may be annotated with parameter-based annotations to extract information from a request. A previous example presented the use @PathParam to extract a path parameter from the path component of the request URL that match

javax.?ws.?rs

public class RestJaxRsServer { public static void main(String[] args) throws Exception { Component component = new Component(); component.getServers().add(Protocol.HTTP, 8009); component.getDefaultHost().attach(new RestJaxRsApplication(null)); compon

笔记:Jersey REST API 设计

REST 统一接口 REST 使用 HTTP 协议的通用方法作为统一接口的标准词汇,REST 服务所提供的方法信息都在 HTTP 方法里,每一种HTTP请求方法都可以从安全性和幂等性两方面考虑,这对正确理解HTTP请求方法和设计统一接口具有决定性的意义,安全性是指系统对接口的访问,不会使服务器端资源的状态发生改变:幂等性是指系统对同一REST接口的多次访问,得到的资源状态是相同的,以下是各个方法的安全性和幂等性要求: 方法名称 安全性 幂等性 说明 GET Y Y GET 方法是只读的 PUT

Java与REST的邂逅之Jersey

Java 与 REST 的邂逅(一)浅谈 Jersey 及 JAX-RS 简介 在Web的世界中,Java从最早的Servlet/JSP,发展到JSTL/JSF,而third party也有action-based的Struts及Spring MVC,或component-based的GWT, ZK等,事实上Java的Web世界已经非常的成熟.然而这些架构主要设计是以Web Application为主要要求,但是Web的世界中还有另外一个常见的应用是Web Services. 设计Web Ser