上一章介紹了Lombok, 今天正式進入Controller
現在API介接最流行的莫過於RESTful
到底什麼是RESTful呢?
RESTful並不是一個新的語言, 或library功能
他是一種規範, 一種定義
相信寫過WEB項目的都知道, 以往大家都用GET跟POST, 介面接口與參數都各自定義
若你沒有相關文件, 根本不知道寫的人是如何定義的
於是一個統一規範與定義的RESTful就出現了
以HTTP傳輸協定, 來當作請求分類:
GET: 請求資料
POST: 新增資料
PUT: 更新資料
DELETE: 刪除資料
當然, Spring也支援相關的Annontation, 能讓大家快速使用
在我們的backend專案下新增Controller資料夾
然後新增一個MemberController.java
@RestController
@RequestMapping("/api")
public class MemberController {
@Autowired
private MemberRepository memberRepository;
@GetMapping("/members")
public Collection<Member> members() {
return memberRepository.findAll();
}
@GetMapping("/member/{id}")
public ResponseEntity<?> getMember(@PathVariable Long id) {
Optional<Member> member = memberRepository.findById(id);
return member.map(response -> ResponseEntity.ok().body(response))
.orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
}
@RestController:
等於@Controller + @ResponseBody, ResponseBody會將返回結果直接寫在Http Response Body中
因為我們資料傳輸時通常只傳回Json, 所以大部分都會使用這Annotation
頁面的導頁與指定會交由前端(React)來做, 之後在React會再教大家
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping等方法
與Http的GET, POST, PUT, DELETE等方法相對應, 只要遵守RESTful規範直接使用即可
@PathVariable:
會從URL上讀取輸入的參數
新增完執行專案, 在瀏覽器上輸入localhost:8080/api/members
如此便能拿到我們要的json資料了
下一章 Day 12 - Controller And RESTful (2)