当前位置: 移动技术网 > IT编程>开发语言>Java > Restful传递数组参数及注解大全

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

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值可以包含文本字符、变量或具有定制正则表达式的变量。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网