一、 配置maven環(huán)境
1.下載maven http://maven.apache.org/download.cgi
image.png

選擇第一個(gè)Binary tar.gz archive (Linux、MacOs)下載安裝包
2.解壓安裝包到需要的目錄下
3.在終端中拖入剛解壓的文件,查看路徑

4.在終端中輸入open ~/.zshrc 進(jìn)入到環(huán)境變量配置文件

添加紅圈中兩行export
export M2_HOME=/Users/dahaoren/Maven/apache-maven-3.6.0
export PATH=$PATH:$M2_HOME/bin
maven 路徑為剛才下載包路徑
5.使修改的環(huán)境變量生效
source ~/.zshrc
6.重新打開終端
mvn -v

看到maven信息即配置maven環(huán)境成功。
二、第一個(gè)rest服務(wù)
1.使用archetype創(chuàng)建項(xiàng)目
Archetype是一個(gè)Maven項(xiàng)目模板工具包。通過Archetype我們可以快速搭建Maven項(xiàng)目。
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 制定原型版本,這個(gè)版本與Jersey的版本一致
groupId:項(xiàng)目組ID
artifactId:工件ID
package:包名
等一會(huì) 直到出現(xiàn) BUID SUCCESS 即成功

2.運(yùn)行服務(wù)
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...

該命令啟動(dòng)了REST服務(wù),端口是8080,我們可以隨時(shí)通過回車鍵停止這個(gè)服務(wù)。同時(shí)還提供了WADL。
3.訪問服務(wù)
curl http://localhost:8080/myapp/myresource
得到Got it!
curl -i http://localhost:8080/myapp/myresource
curl -i 或者--include 得到相應(yīng)信息,第一行包含HTTP協(xié)議版本和狀態(tài)碼,接下來是HTTP HEAD 信息,最后是 HTTP BODY信息。

要想獲得更多的cURL請(qǐng)求響應(yīng)信息,可以用-v參數(shù)。
4.分析項(xiàng)目
源代碼中,包括資源類MyResource 和 MyResourceTest。
在MyResource中,@Path定義了資源路徑,@Get定義了get方法getIt(),@Produces 中定義了響應(yīng)的類型為普通的字符串,示例如下:
@Path("myresource")
public class MyResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it!";
}
}
相應(yīng)地,MyResourceTest中實(shí)現(xiàn)了對(duì)getIt()方法的測(cè)試,示例如下:
@Test
public void testGetIt() {
String responseMsg = target.path("myresource").request().get(String.class);
assertEquals("Got it!", responseMsg);
}
5.單元測(cè)試
(my-first-service目錄下)
mvn test

jersey-quickstart-grizzly2原型提供的模板代碼,使用了main函數(shù),并在其中啟動(dòng)了Grizzly的HttpServer.這是典型的java SE 形式的REST應(yīng)用。更多情況下,我們希望得到的是一個(gè)以war包形式部署到servlet容器的輕量級(jí)java EE項(xiàng)目,下一篇將介紹第一個(gè)servlet容器服務(wù)的項(xiàng)目。