0 概述
本文档主要讲述JAVA-Jersey的使用说明,并给出了示例。
1 前提条件
-
java安装并配置好相应的路径
-
安装java的IDE Eclipse或者IDEA
进入各自的官网安装即可:
Eclipse: https://www.eclipse.org/
IDEA: https://www.jetbrains.com/ -
安装Postman (便于调试)
进入官网 https://www.getpostman.com/,下载安装即可。
2 Jersey的使用
以下以eclipse为例
2.1 创建maven项目
File >> new >> project >> maven project
在这里选择导入Jersey官网提供的快速构建包,如果没有该选项可以按如下操作:
https://jersey.github.io/documentation/latest/getting-started.html
选择Add Archetype…
添加如下内容:
然后填写Group id 和Artifact id即可完成maven工程的创建
2.2 查看新建的工程项目
创建好项目之后,我们就可以看到官方例子啦,主要有两个类Main.java 和MyResource.java,其中MyResource.java就是我们Restful资源,Main.java就是启动restful服务的类。打开工程中的pom.xml文件,并输入以下内容完成maven工程依赖的添加:
2.3 运行示例
运行Main.java后,在浏览器输入http://localhost:8080/myapp/myresource,可以看到如下输则表示简单例子运行成功。
注意这里的8080为Jersey服务开放的接口,若被其他应用占用,则会报错,可以修改为未被占用的端口进行测试。
2.4 Jersry其他方法调用
@GET方式:提供资源的只读访问
在MyResource.java,新建@GET方法
@Path表示指定的访问路径
@Produces 指定http请求的MIME类型数组类型默认是*/*,表示任意的MIME类型
在Postman中输入 http://localhost:8080/myapp/myresource/test可看到如下返回内容:
@QueryParam
QueryParam查询URI里面?之后的参数进行解析
在Postman中输入http://localhost:8080/myapp/myresource/chen,并指定对应的参数的值可看到如下返回内容:
上图中的key和value分别代表参数的名称和值。
@Path()中设置了传参的方式,若上例子中Path(“/{param1}/{param2}/{param3}”),则这时候的传参方式应该是http://localhost:8080/…/…/…/param1=value1/param2=value2/param3=…
输入 http://localhost:8080/myapp/myresource/陈/18/男 可看到:
@Pathparam(“value”)检索url中的value自动与参数匹配,此时使用@Queryparam参数就会出现错误,因为@Queryparam参数指定格式与@Pathparam参数不一样。
@Fromparam参数以表单的形式,访问的URI被解析成form。
@Headparam参数则是获取http请求头中的参数值。
此时我们在Postman中访问:http://localhost:8080/myapp/myresource/head
可以看到此时我们不需要在URL中输入参数都可以进行相应的访问。这里的@DefaultValue(“18”)为初始默认值设置,当没有指定参数时输入的默认值为“18”。
@POST方式:用于更新现有资源或者创建一个新资源。
例如重写上述/head访问方法,在该访问中新增加一个id参数。并把id设置为@pathparam参数,然后在Postman中输入http://localhost:8080/myapp/myresource/head/02访问:
其他方式
@PUT方式:用于创建一个新资源。(客户端需要提供改变后的完整资源)
@PATCH(UPDATE):表示在服务器更新资源(客户端需要提供改变的属性【可以简单理解为补丁】)。
@DELETE方式:用于移除一个资源。
@OPTIONS方式:用于获取资源上支持的操作。
@HEAD方式:只返HTTP header,不返回HTTP body。获得一个资源的元数据,比如一个资源的hash值或者最后修改日期。
2.5 Jersey实现jar包的调用
首先,把新建的项目导出为jar包。选中需要导出的项目,右击选择Export,如图:
然后选择JAR file,设置导出的路径即可。我们需要用到其他jar包时,也可以在maven官方仓库中进行查找,下载并导入即可。
Maven中央仓库地址为:
https://mvnrepository.com/
这时我们可以在我们刚刚新建的Jersey_test项目中导入外部jar包。选中Jersey_test项目,右击选择Build path,Configure build path…,如图:
选择Add External JARs,选择jar包的路径,导入即可。导入后可以看到我们的jar包:
下图分别是原来jar包中的内容,和新的@POST测试方法
在Postman中运行即可看到如下测试结果:
3 Jersey实现对FastDFS的调用
在开始之前请先完成FastDFS集群环境的搭建,并实现可以使用JAVA调用,详情请看之前我的文章《搭建分布式FastDFS集群》、《FastDFS-JAVA-Client使用示例》。
导出FastDFSTest的jar包,并导入到Jersy_test项目中。
在MyResource中新建@POST方法
这里的multipart/form-data,表示不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。这里我们的参数包含路径,因此要采用这样的传参方式。另外两种常见的传参方式为:
application/x-www-form-urlencoded 在发送前编码所有字符(默认);text/plain 空格转换为 “+” 加号,但不对特殊字符编码。file_path和file_type分别代表文件上传的路径和文件类型。
在Postman中运行如图:
此时进入已经搭建好的FastDFS集群中的Storageserver中,可以看到我们通过POST方式上传的文件已经上传成功了。
在浏览器中输入:
storageseverip/group1/M00/00/00/rBAPQV0lXOiAdHNHAABwDWWmycs944.jpg即可看到刚刚通过POST方式上传的文件。
同时也可以实现文件的下载、删除等功能。
实现文件的下载
此时在Postman中执行
进入D盘下的temp文件夹中即可发现该图片已成功下载
实现文件的删除
此时完成了该文件的删除,进入storagesever查看,该文件确实已被删除