728x90
기본 개념: @RestController와 JSON
스프링 부트에서 @RestController는 자동으로 객체를 JSON으로 변환하여 응답합니다. 내부적으로 **Jackson(ObjectMapper)**이 작동합니다.
예제: DTO를 JSON으로 응답하기
@RestController
public class MemberController {
@GetMapping("/api/member")
public MemberDto getMember() {
return new MemberDto("홍길동", "danbi@example.com");
}
}
DTO 클래스
public class MemberDto {
private String name;
private String email;
// 생성자, getter, setter
public MemberDto(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() { return name; }
public String getEmail() { return email; }
}
결과 (JSON)
{
"name": "홍길동",
"email": "danbi@example.com"
}
JSON 응답 실습 포인트
포인트 |
설명 |
자동 변환 | @RestController 또는 @ResponseBody가 있으면, 리턴 객체가 JSON으로 자동 변환 |
ObjectMapper 사용 | 스프링 부트는 내부적으로 Jackson 라이브러리를 사용 |
응답 상태 코드 지정 | ResponseEntity 사용 |
ResponseEntity로 응답 제어
@GetMapping("/api/member")
public ResponseEntity<MemberDto> getMember() {
MemberDto dto = new MemberDto("홍길동", "test@example.com");
return ResponseEntity.ok(dto); // 200 OK 상태로 JSON 응답
}
상태 코드 바꾸기
return ResponseEntity.status(HttpStatus.CREATED).body(dto); // 201 Created
커스텀 응답 포맷 설계 예시
public class ApiResponse<T> {
private int status;
private String message;
private T data;
public ApiResponse(int status, String message, T data) {
this.status = status;
this.message = message;
this.data = data;
}
// getter 생략
}
사용 예:
@GetMapping("/api/member")
public ResponseEntity<ApiResponse<MemberDto>> getMember() {
MemberDto dto = new MemberDto("홍길동", "danbi@example.com");
ApiResponse<MemberDto> response = new ApiResponse<>(200, "요청 성공", dto);
return ResponseEntity.ok(response);
}
결과 (JSON)
{
"status": 200,
"message": "요청 성공",
"data": {
"name": "홍길동",
"email": "danbi@example.com"
}
}
JSON 응답 커스터마이징: @JsonProperty, @JsonIgnore 등
애너테이션 | 설명 |
@JsonProperty("user_name") | JSON key 이름 변경 |
@JsonIgnore | 해당 필드 응답에서 제외 |
@JsonInclude(Include.NON_NULL) | null 값은 포함하지 않음 |
예시:
@JsonProperty("user_name")
private String name;
마무리 요약
항목 | 설명 |
자동 JSON 변환 | @RestController + DTO 클래스 |
라이브러리 | Jackson 사용 (내장됨) |
응답 제어 | ResponseEntity, 상태코드 설정 |
커스터마이징 | @JsonProperty, @JsonIgnore, ApiResponse 패턴 |
LIST
'SpringBoot > REST API 개발' 카테고리의 다른 글
DTO, 응답 포맷 구조화 (0) | 2025.04.15 |
---|---|
Postman / Swagger를 활용한 테스트 (0) | 2025.04.15 |