■ リクエストの送信
GETリクエストで、データを取得するリクエストを送る。
↑Acceptヘッダで 取得するデータの形式をJSON形式に指定している。
デフォルト設定は「* / *」(=なんでも受け付ける)であり、SpringBootは自動で適切な形式(ほぼJSON)を選んで返すので、特に何も指定しなくてもJSONで返ってくる。
const id = 1
const res = await fetch(`/api/words/${id}`, {
method: "GET", //GETの場合は省略可
headers: { //省略可
"Accept": "application/json"
}
});
■ コントローラでハンドリング
@Controller
public class WordApiController {
@GetMapping("/api/words/{id}")
@ResponseBody
public WordDto getWordsById(@PathVariable("id") Integer id){
return wordService.findById(id);
}
}
メソッドに@ResponseBody を付けることで、戻り値の WordDto オブジェクトが JSON形式に変換されてレスポンスされるようになる(Springの HTTPMessageConverter が自動で処理)
毎回メソッドごとに @ResponseBody を書くのは面倒なので、クラスに @RestController を付けることで次のように書ける。
@RestController
public class WordApiController {
@GetMapping("/api/words/{id}")
public WordDto getWordsById(@PathVariable("id") Integer id){
return wordService.findById(id);
}
}
■ HTTPMessageConverterがJavaオブジェクトをJSONに変換
■ クライアント側(JS)でJSONを取得する
if(res.ok){
const word = await res.json();
//wordのプロパティから値を参照できる
}