使用 SpringBoot 建立 RESTful 程式

在開始之前,必須先了解 SpringBoot 是用來做什麼的,我覺得這篇 Blog 比喻得滿生動的XD Introduction to Spring Boot
如果 SpringFramework 是提供原物料(如雞蛋、砂糖、麵粉等),開發人員還必須自己組裝(而且每個案子都會先做類似的事情),
那麼 SpringBoot 就是直接送上蛋糕,把瑣碎重複的事情全部做好 (當然開發人員仍舊可以透過 Java Configuration 或是 設定檔進行客製化)

小弟也是最近案子才開始有接觸 SpringBoot,觀念上若有錯誤還請不吝指教…Orz

程式碼範例 Angular-SpringMVC-Integration

設定 Maven 專案環境

pom.xml 加入 SpringBoot 相關設定,並且設定 app.context.name 供後續設定 context path

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<project>
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>

<properties>
<java.version>1.8</java.version>
<app.context.name>SampleProject</app.context.name>
</properties>
...
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>

設定 Encoding 及 context path

src/main/resources 下加入 application.yml 檔案及以下設定,這邊須注意到,因為繼承了 spring-boot-starter-parent POM,因此引用 Maven 變數值是前後使用 @maven.token@,而非 ${maven.token}

1
2
3
4
5
6
7
8
9
spring:
http:
encoding:
enabled: true
charset: UTF-8
force: true

server:
context-path: /@app.context.name@

設定 RestController

程式碼跟之前寫 SpringMVC 類似,不過 Spring 有提供許多新的 Annotation 幫助我們簡化程式碼,如 4.0 之後可使用 @RestController 以簡化 @Controller@ResponseBody
透過 @requestMapping 設定 RESTful API 的路徑

1
2
3
4
5
6
7
8
9
@RestController
@RequestMapping("/api/cars")
public class APIController {
@RequestMapping("/find")
public String findCars() {
// 回傳 Cars JSONArray
return "[{\"id\":1,\"model\":\"P...\"}]";
}
}

建立主程式

最後就是寫個 main 方法執行 SpringBoot,打開 http://localhost:8080/SampleProject/api/cars/find 就可以看到前一步指定的回傳資料

1
2
3
4
5
6
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(MainApplication.class, args);
}
}

References

相關文章