[Spring] JSON 이란? (+@RequestBody, @ResponseBody)

2023. 6. 23. 23:58·Web/Spring
728x90
728x90

JSON

(JavaScript Object Notation)

  • 자바스크립트에서 객체를 표현하는 방법이지만 다양한 프로그래밍 언어에서 데이터를 주고 받기 위해 사용된다.
  • Spring에서는 주로 응답으로 XML이나 JSON형식을 사용한다.

이러한 형식의 코드를 예로 들 수 있다.

이 코드는 Request Body(요청 본문)에 담기는 값이다.

(회원가입을 할 때 사용할 수 있다.) - POST 방식

{
	"username":"mata",
	"email":"meta@nate.com",
	"password":"meta1234!"
}

 

이 코드는 Response Body(응답본문) 에 담기는 값이다.

{
	"success": true,
	"response": [
 		{
			"id": 1,
			"productName": "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션외 주방용품 특가전",
			"description": "",
			"image": "/images/1.jpg",
			"price": 1000
 		},
 		{
			"id": 2,
			"productName": "[황금약단밤 골드]2022년산 햇밤 칼집밤700g외/군밤용/생율",
			"description": "",
			"image": "/images/2.jpg",
			"price": 2000
 		}
	 ]
}

 

{ } (중괄호) 를 통해 하나의 객체를 표현하며,

[] (대괄호) 는 배열을 뜻하고

내부에는 Key : Value 값들로 각 속성값을 정의하고 있으며,

Key 와 Value 는 : (콜론) 에 의해 구분되고

각각의 속성은 , (쉼표) 로 구분되어 진다.

 

그렇다면 간단한 코드를 예로 들어 Controller에서 JSON데이터를 주고 받아보자.

Controller에서 데이터를 받는 방법에는 여러가지가 있다.

그 중 파라미터를 객체로 받는 방법에는 @RequestBody 어노테이션을 사용하면 된다.

이후 JAVA Object를 JSON 데이터로 응답해주는 @ResponseBody를 사용해 응답을 해준다.

 

@PostMapping("/request")
public ResponseEntity postController(@RequestBody LoginForm loginForm) {
		exampleService.fakeAuthenticate(loginForm);
    return ResponseEntity.ok(HttpStatus.OK);
}

이 코드에서 @RequestBody를 통해 요청 본문에 담긴 JSON 데이터가 자동으로 LoginForm 객체로 변환된다.

@RequestParam
은 주로 GET 요청의 쿼리 매개변수를 추출할 때 사용됩니다.
@RequestBody
는 POST, PUT, PATCH 등의 요청 메서드에서 요청 본문에 포함된 데이터를 처리할 때 주로 사용됩니다.

 

이번엔 Controller에서 데이터를 반환해보자.

커스텀 된 Response object가 있다고 가정하자.

public class ResponseTransfer {
    private String text; 
    
    // standard getters/setters
}
@Controller
@RequestMapping("/post")
public class ExamplePostController {

    @Autowired
    ExampleService exampleService;

    @PostMapping("/response")
    @ResponseBody
    public ResponseTransfer postResponseController(@RequestBody LoginForm loginForm) {
        return new ResponseTransfer("Thanks For Posting!!!");
     }
}

여기서 @ResponseBody는 postResponseController 메서드가 반환하는 값이 응답 본문으로 전송되어야 함을 뜻한다.

 

postman와 같은 콘솔을 이용해서 확인해보면

{"text":"Thanks For Posting!!!"}

이러한 응답이 나오게 된다.

 

추가

Remember, we don't need to annotate the @RestController-annotated controllers with the @ResponseBody annotation since Spring does it by default.

@RestController 는 컨트롤러 클래스에 이 애노테이션을 추가하면 해당 클래스의 모든 핸들러 메서드가 기본적으로 @ResponseBody 동작을 갖게 됩니다.

메서드의 반환 값이 HTTP 응답의 본문으로 전송됩니다. 따라서 별도의 @ResponseBody 애노테이션을 사용하지 않아도 됩니다.

728x90
728x90

'Web > Spring' 카테고리의 다른 글

[Spring] stub는 언제 사용할까?  (2) 2023.07.26
[Spring] @WebMvcTest 란?, 가짜로 등록한다는 것의 의미?  (1) 2023.07.26
MVC패턴을 지키면서 코딩하는방법  (1) 2023.03.29
'Web/Spring' 카테고리의 다른 글
  • [Spring] stub는 언제 사용할까?
  • [Spring] @WebMvcTest 란?, 가짜로 등록한다는 것의 의미?
  • MVC패턴을 지키면서 코딩하는방법
성장하고픈개발자
성장하고픈개발자
방학 기념 개발블로그 작성하기
    반응형
  • 성장하고픈개발자
    꾸준히하자아자
    성장하고픈개발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (68)
      • 독일 (1)
      • Algorithm (45)
        • 백준 & 프로그래머스 (40)
        • 알고리즘 (5)
      • 프로젝트 (5)
        • 카카오 쇼핑하기 web (4)
        • 요약쏙 (0)
      • Web (6)
        • 네트워크 (1)
        • Spring (4)
        • JPA (0)
        • HTTP (1)
      • 후기 (3)
      • SSAFY 일상 (6)
      • 취준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 깃허브
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    그리디
    알고리즘
    C++
    SSAFY
    BOJ
    Andrew Ng
    Spring Data JPA
    Spring
    백준
    백엔드
    합격수기
    딥러닝
    FNN
    LIS
    비자
    책리뷰
    web
    싸피
    쉬운딥러닝
    스택
    testing
    코딩
    네이버데이터센터각
    일상
    정렬
    SpringBoot
    DP
    PS
    회고
    싸피 13기
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.1
성장하고픈개발자
[Spring] JSON 이란? (+@RequestBody, @ResponseBody)
상단으로

티스토리툴바