欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Restful传递数组参数及注解大全

程序员文章站 2024-03-07 17:42:57
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,
      @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 = keywordobj.getvalueas(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值可以包含文本字符、变量或具有定制正则表达式的变量。