這篇文章是照著官方教學(英文)做的。
1. 創建專案
使用Spring Initializr創建專案,並增加Spring Web至dependencies。此步驟也有其他方法,但在這邊不贅述。
2. 建立Resource Representation Class
為了得到像下面這樣子的JSON回應,我們會先建立具有fields、constructors、accessors的Java物件,之後讓資料做使用。
1 2 3 4
| { "id": 1, "content": "Hello, World!" }
|
於是我們會新增java class,定義Greeting這個class的內容,路徑是
src/main/java/com/example/restservice/Greeting.java,並撰寫:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package com.example.restservice;
public class Greeting {
private final long id; private final String content;
public Greeting(long id, String content) { this.id = id; this.content = content; }
public long getId() { return id; }
public String getContent() { return content; } }
|
3. 建立Resource Controller
這裡的Controller是讓專案跑起來之後,可以在 localhost:8000/greeting 看到GET request之後產生的Greeting class instance。
這個Controller的檔案名稱會是GreetingController,並放在
src/main/java/com/example/restservice/GreetingController.java。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package com.example.restservice;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;
@RestController public class GreetingController {
private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting") public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }
|
Annotations
- @RestController
- @GetMapping(“/greeting)
註:@PostMapping,或@RequestMapping(method=POST)
- @RequestParam
4. 測試
啟動專案之後,前往 http://localhost:8080/greeting 查看結果。
http://localhost:8080/greeting?name=替換名字 可以看到不同的Hello, Name!