首先补充一下什么是 Restful ,这里简单说一下,如果一个架构符合REST原则,就称它为RESTful架构。

RESTful架构特点:

  (1)每一个URI代表一种资源;

  (2)客户端和服务器之间,传递这种资源的某种表现层;

  (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

具体介绍参考:

RESTful API 设计指南

RESTful架构简介



一:没有 对象类型 的多参数传递



@POST

@Path("/addFavor/")

void addFavor(@QueryParam("linkId") String linkId, @QueryParam("userId") List<String> userId,

            @QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);

另一种方式可以通过 @PathParam 注解参数,这种方式要在 URL 地址后面声明 如:/{id},多参:/{id}{aaa}{bbb}

@GET

@Path("/{id}")

@ApiMethod(path = "/api/rest/category/{id}", verb = ApiVerb.GET, description = "get category by id", produces = { MediaType.APPLICATION_JSON }, consumes = { MediaType.APPLICATION_JSON })

@ApiResponseObject

Category get(@ApiPathParam(name = "id", description = "The Category id") @PathParam("id") String id);

二:包含 对象类型 的多参传递

需要在对象前声明 @ApiBodyObject

@POST

@Path("/addFavor/")

void addFavor(@QueryParam("linkId") String linkId, @ApiBodyObject User user,

            @QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);

@ApiBodyObject 相当于 SpringMVC 的 @RequestBody

参数注解的作用就是将 xml/json (具体那种看配置,cxf 是json) 转换为实体对象如 User 传递给实现方法,如下:

@Override

@Transactional(readOnly = false)

public void addFavor(String linkId, User user, String favorTypeCode, String linkTable) {

}

三:多 对象参数 传递

Restful 仅支持多个参数中,最多只能有一个是对象参数,就比如一个 Form 表单中只能提交一个对象

解决办法:将多个对象参数封装到一个大对象中,比如新建一个 VO 把这些对象参数都放进去,或者放到Map,List 这些也行

四:Jersey

上面的代码基于
Jersey 框架实现,下面来说说
Jersey 与
RESTful 的关系:

开发 RESTful WebService 意味着支持在多种媒体类型以及抽象底层的客户端-服务器通信细节,如果没有一个好的工具包可用,这将是一个困难的任务

为了简化使用Java开发 RESTful WebService 及其客户端,一个轻量级的标准被提出:JAX-RS API

Jersey RESTful WebService框架是一个开源的、产品级别的JAVA框架,支持JAX-RS API并且是一个JAX-RS(JSR 311和 JSR 339)的参考实现

Jersey不仅仅是一个JAX-RS的参考实现,Jersey提供自己的API,其API继承自JAX-RS,提供更多的特性和功能以进一步简化RESTful service和客户端的开发

Reference:

http://blog.csdn.net/aitcax/article/details/53097562

http://www.tuicool.com/articles/32yYvm

http://liugang594.iteye.com/blog/1496651

http://blog.csdn.net/bapinggaitianli/article/details/46518705

Restful 接口传递参数的更多相关文章

  1. JAVA接口传递参数(POST),从接口接收数据(JSON) -----记录

    1,给接口传递json格式的数据 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOEx ...

  2. formData请求接口传递参数格式

    element ui组件方法的传递 //引入 组件. <el-upload class="avatar-uploader" :action="action" ...

  3. MyBatis传递参数

    MyBatis传递参数 一.使用 map 接口传递参数 在 MyBatis 中允许 map 接口通过键值对传递多个参数,把接口方法定义为 : public List<Role> findR ...

  4. jquery ajax 用 data 和 headers 向 java RESTful 传递参数区别

    jquery 的 ajax 是非常方便的一个函数,记录一下 $.ajax 生成的 http 报文 一.使用 data 传递参数: $.ajax({ url : "webrs/test/add ...

  5. vue项目webpack中Npm传递参数配置不同域名接口

    项目开发中,前端在配置后端api域名时很困扰,常常出现:本地开发环境: api-dev.demo.com测试环境: api-test.demo.com线上生产环境: api.demo.com, 这次是 ...

  6. 资料汇总--Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)【转】

    开发环境:Tomcat9.0 在使用Ajax实现Restful的时候,有时候会出现无法Put.Delete请求参数无法传递到程序中的尴尬情况,此时我们可以有两种解决方案:1.使用地址重写的方法传递参数 ...

  7. Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)

    本文装载自:http://blog.csdn.net/u012737182/article/details/52831008    感谢原文作者分享 开发环境:Tomcat9.0 在使用Ajax实现R ...

  8. 三种方法实现调用Restful接口

    1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  9. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

随机推荐

  1. C++ map 遍历

    #include <iostream> #include <map> using namespace std; int main(){ map<int,int> m ...

  2. CS小分队第二阶段冲刺站立会议(5月30日)

    昨日成果:解决了前天遗留的问题,实现了主界面对于电脑上应用的添加和删除 遇到问题:添加和删除按钮时候,按钮位置图像与北京图片冲突,会出现闪动现象. 删除是通过右键单击出现菜单,其中有删除的选项,但是这 ...

  3. 强化学习之QLearning

    注:以下第一段代码是 文章 提供的代码,但是简书的代码粘贴下来不换行,所以我在这里贴了一遍.其原理在原文中也说得很明白了. 算个旅行商问题 基本介绍 戳 代码解释与来源 代码整个计算过程使用的以下公式 ...

  4. P4语法(5) Package

    Package 对于package这个概念,类似于将一个框架中各组成部件以一个规律进行打包,以正常运转. 基于一个架构去编写一个新的pipeline的时候,需要先了解初始化的时候需要提供那些东西,pa ...

  5. swift - tabBar图片设置的一些注意点

    图片大小尺寸 刚刚开始接触的话,从美工那边拿来的图标大小一般都是偏大的,就像这样: 在此建议,tabBar的图标大小可以是32*32,个人感觉效果不错 图片的颜色问题 如上图所示,该图标的期望颜色(也 ...

  6. form表单元素中disabled的元素的值不会提交到服务器

    1.表单元素中disabled的元素的值不会提交到服务器,后台获取的值为null <form id="myForm" action="#" method= ...

  7. 敏捷冲刺Day7

    一. 每日会议 1. 照片 2. 昨日完成工作 3. 今日完成工作 第一阶段的测试 全部队员对各个方面进行深入检查,找出细节问题 4. 工作中遇到的困难 工作中的困难:对自己做出来的产品进行否定.以求 ...

  8. PHP实现HTML页面静态化

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化.一般情况下会从以下方面 ...

  9. 20个PHP程序性能优化的方法

    1.数据库连接当使用完毕时应当关闭,不要使用长连接. 2.用@屏蔽错误消息的做法非常低效,极其低效. 3.使用选择分支语句(switch case)好于使用多个if,else if. 4.$row[' ...

  10. idea 复制数据库查询结果,粘贴直接生成insert into 语句

    遇到一个场景,需要将数据库查询的结果导入到另外一个数据库中,给我的第一感受是,写程序,从数据库A中获取到数据,在插入到数据库B中. 但是Idea 可以直接复制查询结果,然后粘贴生成insert语句. ...