Restful传递数组参数及注解⼤全
RESTful ⼀种软件架构风格,设计风格⽽不是标准,只是提供了⼀组设计原则和约束条件。它主要⽤于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
需要传递数组参数的情况,如果是⼀般的form表单,可以直接定义参数类型为List<String>即可(不能定义为数组类型,否则只能得到⼀个null)。
⽰例代码如下:
@POST
@Path("/user" )
public Response createUser(@FormParam("username" ) String username,
@FormParam( "keyword") List<String> keywords) {
⽂件上传接⼝如何传递数据参数?
但是如果是上传⽂件的接⼝,因为使⽤了 @FormDataParam 注解,则不能使⽤上述⽤法:
@POST
@Path("/upload" )
@Consumes(MediaType.MULTIPART_FORM_DATA )
public Response uploadFile(@FormDataParam ("filename" ) String filename,
restful接口设计@FormDataParam( "file") InputStream uploadedInputStream,
@FormDataParam( "file") FormDataContentDisposition fileDetail ,
@FormDataParam( "keyword") final List<String> keywords) {
访问这个接⼝时会发⽣异常:
java.lang.IllegalArgumentException  : wrong number of arguments
可见使⽤ @FormDataParam 注解时,将参数类型定义成List<String>是不⾏的,可以定义成 List<FormDataBodyPart> ,从FormDataBodyPart对象中可以取得参数:
@POST
@Path("/upload" )
@Consumes(MediaType.MULTIPART_FORM_DATA )
public Response uploadFile(@FormDataParam("filename" ) String filename,
@FormDataParam( "file") InputStream uploadedInputStream,
@FormDataParam( "file") FormDataContentDisposition fileDetail ,
@FormDataParam( "keyword") final List<FormDataBodyPart> keywordObjs ) {
if (keywordObjs != null && ! keywordObjs.isEmpty()) {
for (FormDataBodyPart keywordObj : keywordObjs) {
String keyword = ValueAs(String.class);
System. out.println( "关键字:" + keyword );
}
}
RESTful 注解⼤全
@GET、@POST、@PUT、@DELETE、@HEAD
@GET、@POST、@PUT、@DELETE 以及 @HEAD 均是 HTTP 请求⽅法指⽰符注释。您可以使⽤它们来绑定根资源或⼦资源内的 Java ⽅法与 HTTP 请求⽅法。HTTP GET 请求被映射到由 @GET 注释的⽅法;HTTP POST 请求被映射到由@POST 注释的⽅法,以此类推。
@Conumes 和 @Produces
@Conumes注释代表的是⼀个资源可以接受的MIME类型。@Produces注释代表的是⼀个资源可以返回的MIME类型。
@Path
@Path注释被⽤来描述根资源、⼦资源⽅法或⼦资源位置。value值可以包含⽂本字符、变量或具有定制正则表达式的变量。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。