REST 全稱是 Representational State Transfer,中文意思是「表述性狀態轉移」。RESTful 是關於 Web 的現有特徵和使用方式的一些準則和約束。 基於 Spring MVC 的 RestController,咱們能夠方便的構建一個 RESTful 風格的應用。javascript
咱們能夠直接使用 IntelliJ IDEA (推薦)中的 Spring initializer 快速建立一個基於 Spring Boot 的項目,這裏使用 Maven 構建, pom.xml
文件以下:php
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
複製代碼
Spring Maven plugin
是 Spring 針對 Maven 開發的一套插件,包含了幾個強大的功能:java
public static void main()
方法,並將其所在的類標誌爲啓動類Spring 一樣支持 Gradle
構建,詳細配置請參考 Build with Gradleweb
這裏的實體類並不是 ORM 中的實體類,而是 REST 中的 「資源」 ,咱們的 web service 要實現的功能是處理 URL 爲 /userinfo/1
的 GET
請求,並將結果以 JSON 做爲響應體返回,響應狀態碼爲 200 OK
,JSON 的格式以下:spring
{
"id": 1,
"name": "張三"
}
複製代碼
這個例子簡單模擬了獲取 id 爲 1 的用戶信息,首先要建立 POJO 類 User
:shell
public class User {
private final long id;
private final String name;
public User(long id, String name) {
this.id = id;
this.name = name;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
}
複製代碼
Spring 默認使用 `Jackson` 做爲 JSON 解析庫將 POJO 類對象序列化爲 JSON。
複製代碼
在 controller 類上添加 @RestController
註解便可實現將返回值序列化爲 JSON 並充當響應體返回,返回的 content-type
爲 application/json
,請求 /user/1
將得 id 爲 1 的用戶的信息,下面是 controller 類:apache
@RestController
public class GreetingController {
private static final String template = "張三";
private final long id = 1;
@RequestMapping("/user/{id}")
public User userInfo(@PathVariable("id")long id) {
return new User(id, template);
}
}
複製代碼
傳統的構建方式是生成一個 war 文件而後部署到 web 服務器上,這樣有時會以爲不太方便,所以推薦使用 Spring Boot 的 Maven 插件快速生成一個獨立的可執行的 jar 文件,使用 java -jar
命令便可啓動這個應用,全部的類和資源等文件都被集成到這一個 jar 文件中,裏面也包括了嵌入式的 servlet 容器(好比 Tomcat),下面是這個應用的啓動類:json
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
複製代碼
@SpringBootApplication
這個註解是一個組合註解,它包括:瀏覽器
@Configuration
:聲明這個類是上下文中的 bean 的配置類@EnableAutoConfiguration
:使 Spring 將上下文中掃描到的相關 bean 配置類或 properties 類,並將這些 bean 放到應用上下文中@EnableWebMvc
的註解,它表示這個應用是一個 web 應用,應用啓動時就會執行和 web 相關的操做,好比實例化 DispatcherServlet
類並進行相關的配置@ComponentScan
:使 Spring 掃描全部自定義組件類、配置類、業務類以及控制器,並將其裝配在啓動類中的 main
方法中調用 SpringBootApplication.run()
便可實現應用的啓動,和傳統 Java web 應用配置複雜的 web.xml 文件大相徑庭,不須要在配置上花費太多時間bash
咱們可使用一條簡單的命令來完成應用打包成 jar:
$ ./mvnw clean package
複製代碼
執行這條命令來啓動應用:
$ java -jar target/gs-rest-service-0.1.0.jar
複製代碼
在瀏覽器中訪問 htpp://localhost:8080/user/1
,沒問題的話會獲得以下響應:
{
"id": 1,
"name": "張三"
}
複製代碼
這僅僅是一個 RESTful web service,更多文檔請瀏覽:Building a RESTful Web Service
我的博客同步更新,獲取更多技術分享請關注:鄭保樂的博客