반응형
@RequestParam
Client 요청 URI 에서 전달되는 파라미터를 메소드 인자와 매칭
휴먼에러 방지를 위해 name 속성을 같이 쓰는게 좋음!
@GetMapping(value = "/main")
public String index(@RequestParam String nickname,
@RequestParam(name="age") String age) {
return "";
}
@RequestBody
Client 에서 서버로 요청 시 복수의 parameter 를 전달할 때 사용
json 기반의 Http Body 를 컨트롤러에서 자바객체로 변환 (Client 에서 보낸 json body를 객체형태로 매핑)
Client 에서 보내고싶은 데이터가 여러개 있을 경우 주로 사용된다.
아래와 같이 param 안에 데이터를 넣고
var param = {
title : "1111",
content : "hello",
userName : "admin"
}
해당 어노테이션을 넣으면 컨트롤러에서 해당 데이터를 객체로 자동 매핑한다
이때 유의할 점은 PostDto 에서 선언된 변수명과 param 에 들어있는 변수명이 완벽하게 같아야 한다
public class PostDto {
private String title;
private String content;
private String userName;
}
/////
@PostMapping(value = "/index-request")
public String indexRequest(@RequestBody PostDto postDto) {
return "/user/index";
}
만약 변수명이 같지 않은 경우 별도로 에러는 발생하지 않으며, 해당 변수만 해당 객체에 매핑되지 않는다
@ResponseBody
Client 로 data 반환 시 사용하며 객체 data 를 json 으로 바꿔 반환한다
해당 어노테이션의 위치는 return type 객체 앞에 써도 되지만, 나는 개인적으로 방법 2를 선호한다
// 방법 1
@GetMapping(value = "/index-rest")
public @ResponseBody ResponseEntity indexRest() {
//json type으로 반환하기 위하여 @ResponseBody 어노테이션이 필요함
return ApiResponseEntity
.builder()
.ok();
}
// 방법 2
@ResponseBody
@GetMapping(value = "/index-rest2")
public ResponseEntity indexRest2() {
//@ResponseBody 어노테이션은 return type 앞에 위치한것보다 현재의 형태가 제일 깔끔해 보인다
return ApiResponseEntity
.builder()
.ok();
}
위와 같은 코드로 컨트롤러에서 데이터를 보내면 Client 에서는 아래와 같은 형태로 받게된다
var response = {
"data": {
"loginId": "admin"
},
"status": 200
}
자세한 코드는 아래 깃헙 주소에서 basic폴더의 README 참고
https://github.com/Daseul727/BackEnd-Skill-Up.git
728x90
'BackEnd > JAVA' 카테고리의 다른 글
Spring boot Multi module Project (2) - 프로젝트 실행 (1) | 2024.01.22 |
---|---|
Spring boot Multi module Project (1) - 스프링 멀티모듈 프로젝트 생성 (0) | 2024.01.22 |
@Component, @Configuration, @Bean (1) | 2024.01.02 |
@Controller, @RestController (0) | 2023.12.31 |
@MappedSuperClass @inherited @Embadded 상속정리 (0) | 2023.02.11 |