JAX-RS入门 五: 自动类型转换
来源:互联网 发布:linux安装两个tomcat 编辑:程序博客网 时间:2024/04/29 23:33
一、默认类型转换规则
在上一节中,已经了解了怎么使用那个annotations去提取请求中各种信息,不过得到的信息值默认都是一个string类型。
这一节介绍JAX-RS一些内置的自动类型转换及其规则。
理论上JAX-RS可以将请求信息转换成任一Java类型,只要该Java类型满足以下条件之一:
- 基本类型: int、short、float、double、byte、char 或 boolean 等
- 定义了带单个String参数的构造方法
- 拥有一个static的valueOf(String)方法,并且这个方法返回这个类型的一个实例
- java.util.List<T>、java.util.Set<T>或java.util.SortedSet<T>,其中 T 满足条件2或者3,或者是一个String
例如:
- @GET
- @Path("{id}")
- public String get(@PathParam("id") int id) {...}
- @Path("/myservice")
- public class MyService {
- @GET
- @Produces("text/html")
- public String get(@HeaderParam("Referer") URL referer) {
- ...
- }
- }
- public enum Color {
- BLACK,
- BLUE,
- RED,
- WHITE,
- SILVER
- }
- @GET
- @Path("/{model}/{year}")
- @Produces("image/jpeg")
- public Jpeg getPicture(@PathParam("make") String make,
- @PathParam("model") String model,
- @MatrixParam("color") Color color) {
- ...
- }
- import java.util.List;
- @Path("/customers")
- public class CustomerResource {
- @GET
- @Produces("application/xml")
- public String getCustomers(
- @QueryParam("start") int start,
- @QueryParam("size") int size,
- @QueryParam("orderBy") List<String> orderBy) {
- ...
- }
- }
- 输入:GET /customers?orderBy=last&orderBy=first
如果转换失败,则认为client请求出错,返回一个404错误。
二、定义缺省值 @DefaultValue
通过使用@DefaultValue注释,可以给某个请求参数定义缺省值,当client的请求中未包含此参数,则缺省参数值将被使用,例如:
- @Path("/customers")
- public class CustomerResource {
- @GET
- @Produces("application/xml")
- public String getCustomers(@DefaultValue("0") @QueryParam("start") int start,
- @DefaultValue("10") @QueryParam("size") int size) {
- ...
- }
- }
如果请求中未提供 start 请求参数,则缺省值0将被使用;如果请求中未包含 size 参数,则缺省值10被使用。
三、强制不解码 @Encoded
使用@Encoded注释,用来告诉JAX-RS,不需要自动解码,直接使用编码后的请求值,例如:
- @GET
- @Produces("application/xml")
- public String get(@Encoded @QueryParam("something") String str) {...}
0 0
- JAX-RS入门 五: 自动类型转换
- JAX-RS入门 五: 自动类型转换
- JAX-RS入门 五: 自动类型转换
- JAX-RS入门 五: 自动类型转换
- JAX-RS入门 五: 自动类型转换
- JAX-RS入门 五: 自动类型转换
- JAX-RS入门 五: 自动类型转换
- JAX-RS入门 五:自动转换
- JAX-RS入门
- JAX-RS入门 四: 注入
- JAX-RS 入门一:基础
- JAX-RS入门 二 :运行
- JAX-RS入门 三:细节
- JAX-RS入门 四:注入
- JAX-RS入门 一 :基础
- JAX-RS入门 一 :基础
- JAX-RS入门 二 :运行
- JAX-RS入门 三 :细节
- Android源码分析-消息队列和Looper
- JAX-RS入门 四: 注入
- android自定义标题栏
- 一个打开文件对话框的小技巧
- Java IO流包结构总结
- JAX-RS入门 五: 自动类型转换
- POJ 1789最小生成树(kruscal算法)
- JAX-RS入门 六: 数据处理(1)
- pendingIntent
- 基于visual Studio2013解决面试题之0504单链表逆序
- 第一站NO.4--《C Primer Plus(第五版)中文版》第五章_5.4 运算符、表达式和语句和5.5 类型转换
- VB6的快捷键 转载自MSDN
- JAX-RS入门 七: 数据处理(2)
- TOJ-ACM