@ResponseBody(서버 → 클라), ( 주로 비동기 )
메서드의 반환값을 HTTP 응답의 body에 직접 작성하도록 하는것
더 자세히 설명하면 메소드 파라미터가 Web Request Body에 명시한 데이터를 통해 bind 되는것을 나타내는 어노테이션이다 (@Valid 를 통해 자동 유효성검사 가능)
비동기 - ajax에 대한 요청을 json 데이터로 반환할때 사용
동기 - 사용은 가능하나 동기방식일땐 주로 HTML 페이지를 반환하는 뷰 렌더링 방식이 일반적으로 사용하기에 많이 쓰이진 않는다
@ResponseBody
@RequestMapping(value = "/ajaxTest.do")
public UserVO ajaxTest() throws Exception {
UserVO userVO = new UserVO();
userVO.setId("테스트");
return userVO;
}
@RequestBody(서버 ← 클라), ( 비동기에서 주로 사용 )
클라이언트한테 받은 http Body를 자바객체 (Entity)로 변환해서 메서드 파라미터로 바인딩할때사용
클라이언트가 서버에 데이터를 전송할때 서버는 해당 데이터를 처리하기 위해 객체로의 형 변환이 필요한데 이를 담당하는것 (Message Converter가 변환해줌)
만약 Http의 Content Type을 지정해주지 않으면 415 에러가 나타난다
동기 - 주로 form 데이터나 쿼리 파라미터를 사용하는 동기방식에선 덜 사용됨
비동기 - 자주 사용(ajax로 JSON 데이터를 요청 본문에 담아 전송할때)
@RequestMapping(value = "/ajaxTest.do")
public String ajaxTest(@RequestBody UserVO getUserVO) throws Exception {
System.out.println(getUserVO.getId());
return "test/login.tiles";
}
쿼리스트링 → ?category=books&sort=price_asc&page=2
쿼리 파라미터 - 쿼리 스트링 내부에서 개별적인 데이터를 나타내는 키-값 쌍으로 여러 파라미터는 &로 구분된다
category=books (키 - category, 값 - books)
sort=price_asc (키 - sort, 값 - price_asc)
@RequesetParam ( 서버 → 클라 ) , ( 동기방식 )
ajax의 경우 보통 json 형태의 데이터를 요청본문에 담아서 사용하는데 어차피 여기에 데이터가 있기때문에 비동기에선 잘 안쓴다.
@RestController
class 최상단에 붙이는 어노테이션으로 리턴값에 자동으로 @ResponseBody가 붙게된다.
자바 객체를 할당하면 알아서 json 형식으로 매핑해서 응답한다.
@PathVariable ( 서버 ← 클라 )
URL 경로(Path)에 있는 변수값을 매개변수에 바인딩할때 사용 name=test?id=hello 일때 (@PathVariable String name, @PathVariable String id) 이런 형태로 사용
@GetMapping("/users/{name}/{id}")
public String getUser(@PathVariable String name, @PathVariable String id) {
// 로직 처리
}
비동기 (AJAX) - RequestBody, ResponseBody를 주로사용
동기 - ResponseBody, RequestParam을 사용
'Spring' 카테고리의 다른 글
타임리프 css 미적용 문제 + redirect 문제 (0) | 2024.08.31 |
---|---|
젠킨스 로컬에서 자동화하기 - 1 (0) | 2024.06.27 |
젠킨스 로컬에서 자동화하기 - 2 (0) | 2024.06.22 |
젠킨스 관련 에러 내용 (crumb, 용량부족) (0) | 2024.06.16 |
Jmeter - 2 (0) | 2024.06.12 |