@GetMappingアノテーション付きメソッドは、与えられたURI表現式と一致するHTTP GETリクエストを処理します。
package com.informanaging.project.demo.controller;
import com.informanaging.project.demo.domain.Person;
import com.informanaging.project.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RequestMapping(value = "/api/person")
@RestController
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping
@RequestMapping(value = "/{id}") // /api/person/{id}의 특정 위치에 있는 값을 PathVariable 로 받겠다는 의미이다. id 와 {id} 가 mapping된
public Person getPerson(@PathVariable Long id) {
return personService.getPerson(id);
}
}
@RequestMapping(value = "/api/person")
:@RequestMappingアノテーションはSpringウェブアプリケーションで最も頻繁に使用されているアノテーションです。クラスに定義したアノテーションは
localhost:8080/api/personとマッピングされます。クラスに定義したので、scopeはクラス全体です。
@RestController
:RESTAPI Controllerを使用することをフレームワークに知らせます。
@GetMapping
:定義した該当メソッドはHttpMethodの中GET Requestを受けます。
@RequestMapping(value = "/{id}")
:localhost:8080/api/person/idとマッピングされます。scopeはgetPerson()です。
/api/person/{id}の特定位置({id})にある値をPathVaraiable Long idにて受け取るとの意味になります。value = "{id}"のidとLong idのidがマッピングされます。
@GetMapping
@RequestMappin(value = "{id}")
上の2行は、以下のように1行にすることも可能です。
@GetMapping("{id}")
package com.informanaging.project.demo.controller;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvcBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest
public class PersonControllerTest {
@Autowired
private PersonController personController;
private MockMvc mockMvc;
@Test
void getPerson() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(personController).build();
mockMvc.perform(
MockMvcRequestBuilders.get("/api/person/1"))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk());
}
}