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

(0)

相关推荐

  • python模块restful使用方法实例

    RESTful架构,目前是比较流行的一种互联网软件架构.REST,即Representational State Transfer的缩写. 说白点就是网站即软件,再白点就是一个服务软件支持http的四种方法: GET用来获取资源,POST用来新建资源.更新资源,PUT用来更新资源,DELETE用来删除资源. 并对外提供一个或多个URI,每个URI对应一个资源:客户端通过URI配合上面的方法就可以和服务 段的软件交互.客户端主要是浏览器,使用restful框架的软件对http的支持也为了web应用

  • PHP实现自动识别Restful API的返回内容类型

    如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json.xml.html.serialize.csv.php等数据? 其实这也不难,因为Rest API也是基于http协议的,只要我们按照协议走,就能做到自动化识别 API 的内容,方法如下: 1.API服务端要返回明确的 http Content-Type头信息,如: Content-Type: application/json; charset=utf-8 Content-Type: application/xml;

  • jQuery调用RESTful WCF示例代码(GET方法/POST方法)

    不废话了,直奔主题吧 wcf端: 近几年比较流行restful,为了能让ajax调用,同时也为了支持restful风格的uri,在创建一个Ajax-enabled Wcf Service后,必须手动修改svc文件,指定Factory,即: <%@ ServiceHost Language="C#" Debug="true" Service="ajaxSample.HelloWorld" CodeBehind="HelloWorld

  • php基于curl扩展制作跨平台的restfule 接口

    restfule 接口 适用的平台:跨平台 所依赖:curl扩展 git:https://git.oschina.net/anziguoer/restAPI ApiServer.php <?php /** * @Author: yangyulong * @Email : anziguoer@sina.com * @Date: 2015-04-30 05:38:34 * @Last Modified by: yangyulong * @Last Modified time: 2015-04-30

  • 高性能web服务器框架Tornado简单实现restful接口及开发实例

    有个朋友让我搞搞tornado框架,说实话,这个框架我用的不多... 我就把自己的一些个运维研发相关的例子,分享给大家. 怎么安装tornado,我想大家都懂. pip install tornado 再来说说他的一些个模块,官网有介绍的.我这里再啰嗦的复读机一下,里面掺夹我的理解. 主要模块 web - FriendFeed 使用的基础 Web 框架,包含了 Tornado 的大多数重要的功能,反正你进入就对了. escape - XHTML, JSON, URL 的编码/解码方法 datab

  • php处理restful请求的路由类分享

    复制代码 代码如下: <?php    class Router {        // 路由表        private $routers = array(            array("name"=>"userlist", "pattern"=>"get /user", "action"=>"User#get"),            array(

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

    RESTful 一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 需要传递数组参数的情况,如果是一般的form表单,可以直接定义参数类型为List<String>即可(不能定义为数组类型,否则只能得到一个null). 示例代码如下: @POST @Path("/user" ) public Response createUser(@FormPara

  • vue 中 get / delete 传递数组参数方法

    在前后端交互的时候,有时候需要通过 get 或者 delete 传递一个数组给后台,但是这样直接传递后台无法接收数据,因为在传递的过程中数组参数会被转译,结果如下: 参数:{ name : [ 1, 2, 3 ] } 转译效果:http://aaa.com?name[]=1&name[]=2&name[]=3 目标效果:http://aaa.com?name=1&name=2&name=3 解决办法: 使用 qs 插件 将数组参数序列化 1.qs.stringify({ a

  • jquery ajax 向后台传递数组参数示例

    需求: 在JS中向后台传递数组参数 分析: JS中的数组是弱类型的可以放任何类型(对象.基本类型),但是如果数组中放的是对象类型,传递到后台是显示的只能是对象字符串--[object Object],原因如下: 在后台接收的时候,只能用request来接收,request.getParameterValues()方法返回的是一个String[],所以,应该是在前台传输的时候调用了对象的toString()方法,那么如果依然想传递对象怎么办?凉拌! 但是可以使用JSON字符串来实现,在后台把JSO

  • jQuery中通过ajax调用webservice传递数组参数的问题实例详解

    下面通过实例给大家说明比较直观些,更方便大家了解. 本人的项目中通过jquery.ajax调用webservice. 客户端代码如下: $.ajax({ url: "test/xxx.asmx", type: 'POST', dataType: 'xml', timeout: , data: { name: "zhangsan", tags: ["aa", "bb", "cc"] }, error: fun

  • js传递数组参数到后台controller的方法

    传递参数传递字符串,所以要把数组转换为字符串, var arr=[1,23,34,5]; var str = arr.toString(); str传递到后台,str.split(" , ");将字符串拆分得到元素. var arr=[1,23,34,5]; var str = arr.toString(); document.write(str); var getArr = str.split(","); for(var i=0;i<getArr.lengt

  • vue中的get方法\post方法如何实现传递数组参数

    目录 get方法\post方法如何传递数组参数 第一部分:vue中get方法如何传递数组参数 下面列出我的接口格式及解决方法的源码 vue get与post传参方式 1.post:用data传递参数 2.get:用params传递参数 3.delete:params传递参数 get方法\post方法如何传递数组参数 背景:项目中突然来了一个post方法传array数组的参数,且该数组参数是循环遍历所有元素按照get方法传参形式进行参数传递的,对于小白的我真的是一个打击呀.但是为了完成任务不能放弃

  • vue中get请求如何传递数组参数的方法示例

    前言: vue中在与后端进行数据交互时,使用axios发送请求,不做配置直接使用get请求传递数组类型参数的时候,后端是无法接收数据的,需要对axios一些简单的配置才能让后端完美的接收数组 1.问题 示例代码 let params = { statusList: ['OVERDUE', 'DELAY'] } this.$http.get('/list', params) .then(res => {}) .catch(e => {}) 上述代码在不做配置的时候请求信息为:/list?stat

  • springmvc 传递和接收数组参数的实例

    java url中如何传递数组,springMVC框架controller类如何接收数组参数? 下面介绍一下URL中传递数组参数方法: dd.do?titles[]=col1&titles[]=col2&titles[]=col3 或者使用ajax方式传递: var param = {titles:['col1','col2','col3']}; $.ajax({url:"dd.php", type:"post", data:param, async

  • axios向后台传递数组作为参数的方法

    axios 的post方法向后台传递参数时的代码: var params = new URLSearchParams(); params.append('faultNum',this..fault_num); params.append('far',this.far); this.$Axios.post("/test",params) .then(res => { }).catch(err => { console.log(err); }); 其中far是个数组,但此时后台

  • SpringMVC 接收前端传递的参数四种方式小结

    目录 SpringMVC 接收前端传递的参数四种方式 @RequestParam 获取注解 @PathVariable获取注解 SpringMVC,可以不设置任何注解即可接收参数 SpringMVC,也可以自动包装成对象 @RequestBody 用来接收数组或者复杂对象 SpringMVC的自动封装(不传参也能进入) SpringMVC接收不到前端传递的参数原因 代码清单 SpringMVC 接收前端传递的参数四种方式 @RequestParam注解 @PathVariable注解 Sprin

随机推荐