今天用jersey写接口,发现有一个post方法中没有得到参数,查了半天发现自己一不小心将@formparam写成了@queryparam,真是一个悲伤的故事。在这里把几个参数类型整理了一下放出来。
1.
@PathParam
使用@PathParam可以获取URI中指定规则的参数,举个例子:
类中@Path("/user")
@GET
@Path("{username"})
@Produces(MediaType.APPLICATION_JSON)
public User getUser(@PathParam("username") String userName) {
...
}
当浏览器请求http://localhost/user/jack时,userName值为jack。
注意,这里的username并不是说Key是username, value是jack而是说/usr/后面跟着的东西就是username,这里username只是个变量
2.
@QueryParam
@QueryParam用于获取GET请求中的查询参数,如:
@GET
@Path("/user")
@Produces("text/plain")
public User getUser(@QueryParam("name") String name,
@QueryParam("age") int age) {
...
}
当浏览器请求http://host:port/user?name=rose&age=25时,name值为rose,age值为25。如果需要为参数设置默认值,可以使用
3.
@DefaultValue,如:
@GET
@Path("/user")
@Produces("text/plain")
public User getUser(@QueryParam("name") String name,
@DefaultValue("26") @QueryParam("age") int age) {
...
}
当浏览器请求http://host:port/user?name=rose时,name值为rose,age值为26。
4.
@FormParam
@FormParam,顾名思义,从POST请求的表单参数中获取数据。如:
@POST
@Consumes("application/x-www-form-urlencoded")
publicvoid post(@FormParam("name") String name) {
// Store the message
}
相信使用过html进行post提交的人对表单一定不陌生,可以想象成这就是在模拟html中表单的请求。
5.
使用Map
在一个大型的server中,因为参数的多变,参数结构的调整都会因为以上几种方式而遇到问题,这时可以考虑使用@Context 注释,并获取UriInfo实例,如下:
@GET
public String get(@Context UriInfo ui) {
MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
MultivaluedMap<String, String> pathParams = ui.getPathParameters();
}
我觉得,可以认为map是上面几种情况的超集,因为它能够替代以上任意一种。map就是context
同样还可以通过@Context 注释获取ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等,如下:
@Path("/")
publicclass Resource {
@Context
HttpServletRequest req;
@Context
ServletConfig servletConfig;
@Context
ServletContext servletContext;
@GET
public String get(@Context HttpHeaders hh) {
MultivaluedMap<String, String> headerParams = hh.getRequestHeaders();
Map<String, Cookie> pathParams = hh.getCookies();
}
}
分享到:
相关推荐
这段代码展示了如何使用Jersey定义一个RESTful接口。其中: - `@POST` 表示该方法处理HTTP POST请求。 - `@Path("getPage")` 定义了访问该资源的路径。 - `@Consumes(MediaType.APPLICATION_JSON)` 和 `@Produces...
6. 注解驱动:Jersey使用Java注解(如`@Path`, `@PathParam`, `@QueryParam`, `@HeaderParam`, `@FormParam`等)来简化配置,使得代码更简洁易读。 7. 过滤器和拦截器(Filters and Interceptors):Jersey提供过滤...
1. 参数绑定:通过注解接收请求参数,如`@PathParam`、`@QueryParam`、`@FormParam`等。 2. 路由分发:使用`@Path`注解的嵌套路由,实现复杂的URL结构。 3. 类型转换:Jersey自动处理JSON和XML的序列化与反序列化。 ...
Jersey是Java世界中的一款流行的RESTful Web服务框架,它基于JSR 311(Java API for RESTful Web Services)标准实现。本资源提供的"jersey 1.9 框架源码"是该框架的一个较早版本,对于学习和理解RESTful服务的实现...
3. **请求和响应处理**:使用`@QueryParam`、`@PathParam`、`@FormParam`等注解来获取请求参数,同时,可以通过`Response`对象来构造并返回响应,包括状态码、头部信息和实体内容。 4. **内容协商**:Jersey允许...
2. **数据绑定**:利用@XmlRootElement、@FormParam、@QueryParam等注解,可以自动将HTTP请求的数据与Java对象进行绑定和反绑定。 3. **过滤器和拦截器**:使用@Provider和@Priority注解,可以定义自定义的过滤器和...
3. **Jersey注解**:学习和使用Jersey提供的注解,如`@PathParam`、`@QueryParam`、`@FormParam`和`@HeaderParam`,以从请求中获取参数。 4. **实体处理**:使用`@XmlRootElement`和`@XmlElement`等JAXB注解处理XML...
在实际应用中,我们需要一个JAX-RS实现库,如Jersey或Resteasy,它们提供运行时环境来处理请求和响应。例如,使用Jersey,我们可以这样配置Web服务: ```xml <!-- 在web.xml中配置Jersey --> <servlet-name>...
可以使用`@PathParam`、`@QueryParam`、`@FormParam`、`@HeaderParam`等注解来获取请求参数,同时通过`@Context`注入`HttpServletRequest`和`HttpServletResponse`以获取更多请求信息或自定义响应。 此外,Jersey还...
Jersey 提供了一系列注解来增强REST服务的功能,例如`@PathParam`用于从URL路径中提取参数,`@QueryParam`用于从查询字符串中获取参数,`@HeaderParam`用于处理HTTP头信息,`@FormParam`用于表单数据,以及`@...
- 注解方法参数:通过`@PathParam`、`@QueryParam`、`@FormParam`等注解获取请求中的参数。 - 返回响应:可以是任何Java对象,Jersey会自动将其转换为合适的格式返回给客户端。 例如,创建一个返回“Hello, World!...
- **高级注解**:如 `@PathParam`、`@QueryParam`、`@FormParam`、`@HeaderParam` 等,用于从请求中获取参数。 - **安全与认证**:结合 OAuth2、JWT 或其他机制实现身份验证和授权。 - **服务版本控制**:通过 URL ...
5. **资源模型和数据转换**:讲解如何使用`@PathParam`、`@QueryParam`、`@FormParam`等注解获取请求参数,并使用`@Produces`和`@Consumes`指定响应和请求的媒体类型,如JSON或XML。 6. **测试REST服务**:介绍如何...
4. **处理参数**:使用`@PathParam`, `@QueryParam`, `@FormParam`, `@HeaderParam`, `@CookieParam`等注解,可以从请求中获取参数。例如,`@PathParam("id")`可以从URL路径中获取参数。 5. **异常处理**:可以...
参数获取支持 @FormParam, @PathParam, @QueryParam, @HeaderParam等 内容支持常用的JSON, XML, TEXT 能够方便地实现Java复杂对象, List, Map对象与JSON/XML的互转换 支持多文件、多参数上传,支持文件下
了解了基础后,可以深入学习 JAX-RS 规范中的其他注解,如 `@PathParam`、`@QueryParam`、`@HeaderParam`、`@FormParam`,它们分别用于从 URI 路径、查询参数、HTTP 头部和表单数据中获取参数。同时,`@Context` ...
- **处理HTTP请求**:在资源类的方法中,可以使用`@PathParam`, `@QueryParam`, `@FormParam`等注解获取请求参数。 - **数据序列化与反序列化**:JAX-RS支持多种数据格式如JSON和XML,可以通过`@Produces`和`@...
在JAX-RS中,可以通过注解如`@PathParam`、`@QueryParam`、`@FormParam`等自动将HTTP请求参数绑定到服务方法的参数上。同样,响应结果也可以自动转换为JSON或XML格式,这在PhoneCat中可能是通过Jackson或Gson库来...
通过`@PathParam`、`@QueryParam`和`@FormParam`注解接收URL路径参数、查询参数和表单数据。 6. **错误处理与异常管理** 实现自定义的异常处理器,使用`@Provider`和`@ExceptionMapper`注解,处理可能出现的HTTP...
这时可以利用JAX-RS的注解,如`@PathParam`、`@QueryParam`、`@FormParam`等,以及支持JSON或XML序列化的库,如Jackson或Gson。 此外,REST-WebAPI项目中的“演示”部分可能包含了如何测试和使用这些API的示例。这...