一、 配置maven环境
1.下载maven http://maven.apache.org/download.cgi
image.png
选择第一个Binary tar.gz archive (Linux、MacOs)下载安装包
2.解压安装包到需要的目录下
3.在终端中拖入刚解压的文件,查看路径
4.在终端中输入open ~/.zshrc
进入到环境变量配置文件
添加红圈中两行export
export M2_HOME=/Users/dahaoren/Maven/apache-maven-3.6.0
export PATH=$PATH:$M2_HOME/bin
maven 路径为刚才下载包路径
5.使修改的环境变量生效
source ~/.zshrc
6.重新打开终端
mvn -v
看到maven信息即配置maven环境成功。
二、第一个rest服务
1.使用archetype创建项目
Archetype是一个Maven项目模板工具包。通过Archetype我们可以快速搭建Maven项目。
mvn archetype:generate \
-DarchetypeArtifactId=jersey-quickstart-grizzly2 \
-DarchetypeGroupId=org.glassfish.jersey.archetypes \
-DinteractiveMode=false \
-DgroupId=my.restful \
-DartifactId=my-first-service \
-Dpackage=my.restful \
-DarchetypeVersion=2.22.1
teractiveMode=false代表无需交互
archetypeVersion 制定原型版本,这个版本与Jersey的版本一致
groupId:项目组ID
artifactId:工件ID
package:包名
等一会 直到出现 BUID SUCCESS 即成功
2.运行服务
cd my-first-service
mvn package
mvn exec:java
信息: Started listener bound to [localhost:8080]
12月 09, 2018 10:00:44 下午 org.glassfish.grizzly.http.server.HttpServer start
信息: [HttpServer] Started.
Jersey app started with WADL available at http://localhost:8080/myapp/application.wadl
Hit enter to stop it...
该命令启动了REST服务,端口是8080,我们可以随时通过回车键停止这个服务。同时还提供了WADL。
3.访问服务
curl http://localhost:8080/myapp/myresource
得到Got it!
curl -i http://localhost:8080/myapp/myresource
curl -i 或者--include 得到相应信息,第一行包含HTTP协议版本和状态码,接下来是HTTP HEAD 信息,最后是 HTTP BODY信息。
要想获得更多的cURL请求响应信息,可以用-v参数。
4.分析项目
源代码中,包括资源类MyResource 和 MyResourceTest。
在MyResource中,@Path定义了资源路径,@Get定义了get方法getIt(),@Produces 中定义了响应的类型为普通的字符串,示例如下:
@Path("myresource")
public class MyResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it!";
}
}
相应地,MyResourceTest中实现了对getIt()方法的测试,示例如下:
@Test
public void testGetIt() {
String responseMsg = target.path("myresource").request().get(String.class);
assertEquals("Got it!", responseMsg);
}
5.单元测试
(my-first-service目录下)
mvn test
jersey-quickstart-grizzly2原型提供的模板代码,使用了main函数,并在其中启动了Grizzly的HttpServer.这是典型的java SE 形式的REST应用。更多情况下,我们希望得到的是一个以war包形式部署到servlet容器的轻量级java EE项目,下一篇将介绍第一个servlet容器服务的项目。