Talend Api Tester를 활용한 API Test

박성현·2025년 2월 15일

java

목록 보기
51/51

📌 API 호출 흐름 이해하기 – @Controller vs @RestController

입사한 지 한 달이 지나면서 문득 API 호출 흐름 을 정확히 이해하고 있는가? 라는 의문이 들었다.
프로젝트에서 API 호출을 담당하게 될 것이므로, 기존에 진행했던 프로젝트를 참고하여 이번 기회에 제대로 공부해보자! 💪


1️⃣ 기존 프로젝트의 BoardController 코드

기존 프로젝트에서는 @Controller를 사용하여 View(HTML) 를 반환하는 방식으로 구현했다.

@GetMapping("/list")
	public String list(Model model, @RequestParam(value="page", defaultValue="0") int page, 
			@RequestParam(value = "kw", defaultValue = "") String kw) {
		try {
            Page<Board> paging = this.boardService.getList(page, kw);
            List<Board> topBoards = this.boardService.getTopBoards();
            model.addAttribute("paging", paging);
            model.addAttribute("topBoards", topBoards);
            model.addAttribute("kw", kw);
        } catch (DataNotFoundException e) {
            model.addAttribute("message", "게시글이 없습니다.");
        }
        return "board/list";
    }

위와 같이 view딴을 넘겨줬었다 !
그런 후 아래와 같이 API값을 넘겨준다면 !


✅ @Controller를 사용하여 board/list.html 페이지를 렌더링
✅ 데이터를 Model 객체에 담아 View로 전달

하지만 API 호출을 위해서는 JSON 형식으로 데이터를 반환해야 한다!

위와 같이 @Controller는 렌더링을 view딴으로 할 수 있도록 해주고 @RestController는 응답을 JSON로 해준다 !


3️⃣ @RestController 적용 – JSON 응답으로 변환

이제 @Controller를 @RestController로 변경하고, JSON 데이터를 반환하도록 수정하자.

그럼 @Controller를 @RestController로 수정을 한 후 !

아래의 코드와 같이 수정해주면 !!

@GetMapping("/list")
	public ResponseEntity<?> list(@RequestParam(value="page", defaultValue="0") int page, 
			@RequestParam(value="kw", defaultValue="") String kw) {
		try {
			Page<Board> paging = this.boardService.getList(page, kw);
			List<Board> topBoards = this.boardService.getTopBoards();

			Map<String, Object> response = new HashMap<>();
			response.put("paging", paging);
			response.put("topBoards", topBoards);
			response.put("kw", kw);

			return ResponseEntity.ok(response);  // JSON 데이터 반환
		} catch (DataNotFoundException e) {
			return ResponseEntity.status(HttpStatus.NOT_FOUND)
					.body(Collections.singletonMap("message", "게시글이 없습니다."));
		}
	}

✅ @RestController 사용하여 JSON 응답 반환
✅ ResponseEntity 활용하여 상태 코드와 함께 응답 처리
✅ Map<String, Object> 를 사용하여 여러 개의 데이터를 JSON 형태로 전달


4️⃣ API 요청 테스트 결과

위처럼 @RestController를 적용하고 나서 API를 호출하면, Content-Type이 application/json 으로 설정된 것을 확인할 수 있다! 🎯 Talend Api Tester를 활용 해보자!

✅ Content-Type: application/json 확인
✅ 요청하는 곳에서 JSON 데이터를 가공하여 활용 가능

profile
개발기록장

0개의 댓글