概述
resteay对参数解析
get
@PathParam 匹配url变量的,假如@path("/{param}/a"),url访问/adc/a,则@PathParam("param")获取的就adc.
@QueryParam("name"),url访问name=张三&id=1,则@QueryParam("name")的值就是"张三"
post
测试方式可采用postman的方式
- application/x-www-form-urlencoded 一般表单的默认提交方式,提交数据将会按照key1=value1&key2=value2的形式进行ur编码
- multipart/form-data 一般上传文件用到,其生成的数据会已分割线分割不同的字段,正文包含正文以及正文的描述,诸如content-disposition,filename的描述信息,文本或者二进制的正文
- application/json 这数据已json的格式传递,ajax经常用到,将一个form表单序列化后提交,这种格式有json数据天然的优势,可以传递层级较多的信息
- text/xml 这个就用到比较少,xml格式文件远不如json来的方便,更适用于xml-rpc协议这种http中用xml进行数据交换的场景
- ....
制定消费类型 ;@Consumes 默认*/*
application/x-www-form-urlencoded
@FormParam("name"),MultivaluedMap<String,String> params
multipart/form-data
- 对简单的文本或者pojo的value的形式,可直接用map--('中文乱码,看下)
- 文件上传,可使用MultipartFormDataInput
raw
对应的content_type有多种
- txt为content_type=text/plain,原生的数据,直接用一个string 参数接受就可以
- json对应content_type=application/json,也可以直接用string接受
- js对应content_type=application/json
- ....
binary
用byte[]接收
解决multipart/form-data参数中文乱码问题 定义一个ReaderInterceptor( 或者ContainerResponseFilter),以ReaderInterceptor为例
public class ReadCharsetInterceptor implements ReaderInterceptor {
@Override
public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException, WebApplicationException {
context.setProperty(InputPart.DEFAULT_CHARSET_PROPERTY,"UTF-8");//resteasy.provider.multipart.inputpart.defaultCharset
//context.setProperty(InputPart.DEFAULT_CONTENT_TYPE_PROPERTY,"UTF-8");//resteasy.provider.multipart.inputpart.defaultContentType
return context.proceed();
}
}
使用pojo接收参数
一般参数
testgetvo