1. 程式人生 > WINDOWS開發 >使用IDEA 搭建基於jersey的RESTful api

使用IDEA 搭建基於jersey的RESTful api

環境準備:

  • Intellij IDEA
  • tomcat 7

1. 建立專案

建立一個web Application專案

技術分享圖片

技術分享圖片

建立完成後,使用Add Frameworks Support把maven專案的支援引入。

在專案上右鍵:

技術分享圖片

技術分享圖片

到此為止就已經成功建立了一個web專案了。

2. 專案配置

  2.1 Maven配置

  修改pom.xml,引入Jersey相關jar包

<dependency>                       
   <groupId>org.glassfish.jersey.containers</
groupId>   <artifactId>jersey-container-servlet</artifactId>    <version>2.25</version> </dependency>

  2.2 web配置

  修改web.xml

<servlet>
  <servlet-name>JAX-RS Servlet</servlet-name>
  <servlet-class>org.glassfish.jersey.servlet.ServletContainer</
servlet-class>   <init-param>     <param-name>jersey.config.server.provider.packages</param-name>     <param-value>com.hlzf.hellojersey</param-value>   </init-param>   <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping>   <servlet-name
>JAX-RS Servlet</servlet-name>   <url-pattern>/api/*</url-pattern> </servlet-mapping>

  其中com.hlzf.hellojersey對應放置restful demo程式碼的包,/api/對應的是restful api對映的地址,一般我們不把這個地址設為/*,因為這樣會覆蓋預設的index地址,除非你自己重新定義了首頁地址。

  2.3 編寫邏輯程式碼

  在com.hlzf.hellojersey下新建Hello.java檔案。

package com.hlzf.hellojersey;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
@Path 對應的是restful api的子路勁,比如前面配置的是/api/*,則訪問該API的路徑就是https//:ip:port/api/hello
@GET @POST 對應的是請求資源用的HTTP方法
@Produces 表示返回的資料型別,如MediaType.TEXT_PLAIN對應返回文字型別
 */
@Path("hello")
public class Hello {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello(){
        return "Hello,I am text!";
    }

    @POST
    @Produces(MediaType.TEXT_XML)
    public String sayXMLHello() {
        return "<?xml version=\"1.0\"?>" + "<hello> Hello,I am xml!" + "</hello>";
    }

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String sayHtmlHello() {
        return "<html> " + "<title>" + "Hello Jersey" + "</title>"
                + "<body><h1>" + "Hello,I am html!" + "</body></h1>" + "</html> ";
    }
}

3. 啟動專案

將maven引入的jar包放到lib資料夾下。

點選File->Project Structure

技術分享圖片

技術分享圖片

在tomcat中引入專案,啟動

技術分享圖片

使用網頁進行get請求:

技術分享圖片

4. 釋出war包

技術分享圖片

技術分享圖片

技術分享圖片

打包完成後,在out目錄找到war包 :

技術分享圖片

5. 帶引數的api介面設計

  5.1 @PathParam

  使用該註釋獲取引數時可以獲取URI中制定規則的引數

//該類的路徑為/user
@GET
@Path("{username"})
@Produces(MediaType.APPLICATION_JSON)
public User getUser(@PathParam("username") String userName) {
 //...
}

  瀏覽器請求:http://localhost:8080/user/zhangsan

  5.2 @QueryParam

  該引數用於獲取Get請求中的查詢引數,和上一個的區別是它是通過URL中的?符號來實現的。

@GET
@Path("/user")
@Produces("text/plain")
public User getUser(@QueryParam("name") String name,@QueryParam("age") int age) { 
//...
}

  瀏覽器請求:http://localhost:8080/user?name=zhangsan&age=12

  5.3 @FormPara

  從Post請求的表單中獲取資料

@POST
@Consumes("application/x-www-form-urlencoded")
publicvoid post(@FormParam("name") String name) { 
//
}

  5.4 預設引數值DefaultValue

  在函式獲取引數時引數有一個預設值,那麼就可以使用該註釋,它的使用方法如下:

@GET
@Path("/user")
@Produces("text/plain")
public User getUser(@QueryParam("name") String name,@DefaultValue("26") @QueryParam("age") int age) { 
//...
}

  5.5 使用Map的引數@Context

  在一個大型的server中,由於引數的多變,引數結構的調整很容易遇到問題,這時候就可以考慮使用@Context來進行註釋了。例子如下:

@GET
public String get(@Context UriInfo ui) { 
     MultivaluedMap<String,String> queryParams = ui.getQueryParameters(); 
    MultivaluedMap<String,String> pathParams = ui.getPathParameters();
}

6. 參考連結

https://www.cnblogs.com/MarsCheng/p/7245292.html

https://blog.csdn.net/mnicsm/article/details/105010233

https://www.jianshu.com/p/ac01105241bf