
JSON 요청과 응답은 웹 애플리케이션에서 클라이언트와 서버 간에 데이터를 주고받을 때 사용되는 형식 중 하나입니다. JSON(JavaScript Object Notation)은 가독성이 높고 간결한 텍스트 기반의 데이터 교환 형식으로, 클라이언트와 서버 간에 데이터를 구조화하고 전송하기 위해 주로 사용됩니다.
POST /api/create HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "John Doe",
"age": 25,
"email": "john@example.com"
}
Content-Type: application/json이 명시되어야 함@PostMapping("/api/create")
public ResponseEntity<String> create(@RequestBody User user) {
// user 객체를 사용하여 작업 수행
return new ResponseEntity<>("User created successfully", HttpStatus.CREATED);
}
@RequestBody 어노테이션을 사용하여 JSON 요청을 자바 객체로 변환할 수 있다.HTTP/1.1 200 OK
Content-Type: application/json
{
"status": "success",
"message": "User retrieved successfully",
"data": {
"name": "John Doe",
"age": 25,
"email": "john@example.com"
}
}
Content-Type: application/json이 명시되어야 함@GetMapping("/api/user/{id}")
@ResponseBody
public User getById(@PathVariable Long id) {
// id를 사용하여 User 객체를 조회하고 반환
}
@ResponseBody 어노테이션을 사용하여 자바 객체를 JSON으로 변환하여 응답할 수 있다.JSON 요청과 응답을 사용하면 클라이언트와 서버 간의 데이터 교환을 효율적으로 처리할 수 있고 다양한 플랫폼 간에도 호환성이 높아지는 장점이 있다.
@RestController : 반환값 객체를 JSON으로 변환@ResponseBody : 컨트롤러의 메서드는 반환값을 템플릿으로 인식하는데, @ResponseBody는 반환값을 템플릿이 아닌 문자열 or 객체로 인식함@JsonIgnore : JSON 객체로 반환할 때 특정 필드 값을 배제시킬 수 있음@JsonFormat(pattern = "yyyy.MM.dd HH:mm") : 날짜를 형식화 시킴/**
* 에러를 공통된 제이슨 형식으로 담는 클래스
* 에러 응답 데이터를 통일성 있게 만들기 위해서
*/
@Data
@RequiredArgsConstructor
@NoArgsConstructor // 기본생성자
public class JSONData<T> {
// 성공했을때 , 에러가 없을때
// 보통 성공을 많이 하니까 true를 기본값으로 설정하자!
private boolean success = true;
// 스프링에서 지원하는 응답 상태
// 문자열임
// 200이 가장 많이 나오므로, 성공시를 기본값으로 설정하자!
private HttpStatus httpStatus = HttpStatus.OK;
// 성공시 Body 데이터
@NonNull
private T data;
// 실패시 메세지
private String message;
}
@NoArgsConstructor, @RequiredArgsConstructor : 기본생성자, 필수생성자