@RequestMapping("/sample/not-value")
@ResponseBody
public String sample1(){
return "RequestMapping without value property";
}
@ResponseBody
@RequestMapping("/sample/path/{param}")
public String samplePath(@PathVariable("param")String parameter){
return "Request Path Parameter : "+parameter;
}
?
로 시작하고 각 항목은 키=값
형식으로 서버에 값을 전달하는 방법입니다.param
이라는 키로 CODE:J
라는 값을 전달 하였습니다. @ResponseBody
@RequestMapping("/sample/query-string")
public String sampleQueryString(@RequestParam("param")String parameter){
return "Sample Query String : "+parameter;
}
키=값
형식이기 때문에 URL에서 순서가 바뀌어도 관계가 없습니다.&
표시로 구분합니다. @ResponseBody
@RequestMapping("/sample/query-string-many")
public String sampleQueryString2(@RequestParam("param1")String parameter1,
@RequestParam("param2")String parameter2){
return "Many Query String : param 1 = " +parameter1 + "param2 = "+parameter2;
}
http://localhost:8080/sample/query-string-many?param1=CODE& param2=:J
required = false
옵션이 없다면 선택적 매개변수입니다.@ResponseBody
@RequestMapping("/sample/query-string-option")
public String sampleQueryStringOption(@RequestParam(value = "required")String required,
@RequestParam(value = "not_required", required = false)String notRequired,
@RequestParam(value = "default_value",defaultValue = "default value")String defaultValue) {
return String.format(
"Query String Options. required=%s,notRequired=%s, defaultValue=%s",
required, notRequired, defaultValue);
}
http://localhost:8080/sample/query-string-option?required=really
http://localhost:8080/sample/query-string-option?required=really& not_required=oh-my-god
http://localhost:8080/sample/query-string-option?required=really& not_required=oh-my-god& default_value=i-am-standard
String
등 Request와 관련 없는 타임의 파라미터가 선언되었을 경우 스프링은 @RequestParam(required=false, value={변수명})
이라고 가정합니다@ResponseBody
@RequestMapping("/sample/withdout-request-param")
public String sampleWithdoutRequestParam(String value){
return value;
}
@RequestParam(value = "value", required = false) String value
String value
setter
메서드가 모두 있어야 정상 동작합니다.GET http://localhost:8080/sample/param-dto?name=spring-boot&age=27hobby=coding
name : spring-boot, age : 27, hobby : coding
import lombok.Setter;
import lombok.ToString;
@Setter
@ToString
public class SampleRequestDTO {
private String name;
private int age;
private String hobby;
}
@ResponseBody
@RequestMapping("/sample/param-dto")
public String sampleParamDTO(SampleRequestDTO sampleRequestDTO){
return sampleRequestDTO.toString();
}
http://localhost:8080/sample/param-dto?name=spring-boot&age=27&hobby=coding
GetMapping
어노테이션은 @RequestMapping(method=RequestMethod.GET, value=..)
의 축약형 표현입니다. @GetMapping("/sample/get-mapping")
@ResponseBody
public String sampleGetMapping(){
return "this is get mapping example";
}
PostMapping
어노테이션은 @RequestMapping(method=RequestMethod.POST, value=..)
의 축약형 표현입니다.@PostMapping("/sample/post-mapping")
@ResponseBody
public String samplePostMapping(){
return "this is post mapping example";
}
/sample/post-mapping
경로는 GET 요청을 받아들이지 않기 때문에 오류가 발생합니다.@Controller
어노테이션과 @ResponseBody
어노테이션을 합쳐놓은 것이 @RestController
입니다.@Mapping
어노테이션에 @ResponseBody
어노테이션이 없습니다.@RestController
public class SampleRestController {
@GetMapping("/rest")
public String index() {
return "this is rest";
}
@GetMapping("/rest/now")
public LocalDateTime now() {
return LocalDateTime.now();
}
}
@RequestMapping
은 메서드 뿐만 아니라 클래스에도 사용할 수 있습니다.@RestController
@RequestMapping(value="/class/request")
public class SampleClassRequestMapping {
@GetMapping("/")
public String index() {
return "this is sample class Request Mapping";
}
@GetMapping("/now")
public LocalDateTime now() {
return LocalDateTime.now();
}
}