[Spring Framework] @RestController로 REST API 만들기 (feat. Talend, HTTP 파일 테스트)

2025. 6. 17. 15:24·Backend

요즘 스프링 프레임워크로 게시판 프로젝트를 만들면서 REST API도 직접 구현해보고 있는데, 그중에 @RestController를 이용해서 API를 만들고 테스트한 내용을 기록해본다.

 

 

1. @RestController란?

 

기존의 @Controller는 주로 뷰(JSP, Thymeleaf 등)를 반환할 때 사용하지만, @RestController는 JSON 데이터를 반환할 때 사용된다. 내부적으로는 @Controller + @ResponseBody를 합쳐 놓은 거라서, 객체를 반환하면 자동으로 JSON으로 변환해준다.

@RestController
public class MyApiController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, REST!";
    }
}

 

요런 식으로 작성하면, /hello에 GET 요청을 보내면 문자열 그대로 반환되는 게 아니라 JSON으로 바뀌어서 응답된다.

 

 

2. 실제 코드 예시

아래는 게시판 API의 컨트롤러 코드다.

@RestController
@RequestMapping("/api/board")
@RequiredArgsConstructor
@Log4j2
public class BoardController {
    private final BoardService service;

    @GetMapping("")
    public ResponseEntity<List<BoardDTO>> getList() {
        return ResponseEntity.ok(service.getList());
    }

    @GetMapping("/{no}")
    public ResponseEntity<BoardDTO> get(@PathVariable Long no) {
        return ResponseEntity.ok(service.get(no));
    }

    @PostMapping("")
    public ResponseEntity<BoardDTO> create(@RequestBody BoardDTO board) {
        return ResponseEntity.ok(service.create(board));
    }

    @PutMapping("/{no}")
    public ResponseEntity<BoardDTO> update(@PathVariable Long no, @RequestBody BoardDTO board) {
        return ResponseEntity.ok(service.update(board));
    }

    @DeleteMapping("/{no}")
    public ResponseEntity<BoardDTO> delete(@PathVariable Long no) {
        return ResponseEntity.ok(service.delete(no));
    }
}
  • @GetMapping(""): 전체 게시글 리스트 조회
  • @GetMapping("/{no}"): 특정 게시글 상세 조회
  • @PostMapping(""): 게시글 등록
  • @PutMapping("/{no}"): 게시글 수정
  • @DeleteMapping("/{no}"): 게시글 삭제

 

그리고 ResponseEntity를 사용하면 단순히 데이터를 반환하는 것뿐만 아니라 상태 코드나 헤더도 같이 설정할 수 있다.

(예: ResponseEntity.status(HttpStatus.CREATED).body(board) 이런 식으로도 가능)

 

 

3. REST API 테스트 방법

 

개발한 API가 잘 동작하는지 테스트하는 방법은 여러 가지가 있지만, 나는 다음 두 가지 방법을 사용했다.

 


방법 1. 크롬 확장 프로그램 – Talend API Tester

 

크롬 웹스토어에서 “Talend API Tester - Free Edition” 을 설치해서 사용했다.

Postman이랑 비슷한 UI인데, 무료고 간편하게 테스트할 수 있어서 가볍게 쓰기에 좋았다.

 

  • 메서드 선택 (GET, POST 등)
  • URL 입력
  • Body, Headers, JSON 입력 등등 다 가능

 

직접 테스트할 때는 예를 들어 GET http://localhost:8080/api/board/ 이렇게 요청을 보내서 결과를 확인할 수 있다.

 


 

방법 2. HTTP 파일 생성해서 테스트 (VSCode, IntelliJ 지원)

 

두 번째는 api_test.http라는 파일을 직접 만들어서 테스트한 방법이다.

이 방식은 코드처럼 테스트 요청을 적어놓고 클릭 한 번으로 바로 실행 가능해서 굉장히 편리하다.

 

내가 쓴 예시는 다음과 같다:

### 1. 게시글 목록 조회
GET http://localhost:8080/api/board/

### 2. 개별 게시글 조회
GET http://localhost:8080/api/board/14

IntelliJ에서 실행하면 경로가 BoardController와 연동되어 자동완성이 가능하다.

 

이걸 IntelliJ에서 .http 파일로 저장한 다음 요청 위에 있는 “Run Request” 버튼을 누르면 바로 응답이 뜬다.

 

  • 한 파일에 여러 요청을 쓸 수 있어서 정리도 깔끔하고,
  • 이력이 남아서 재사용하기도 좋다.

 

+ 추가 팁 – 변수로 URL 관리하기 (http-client.env.json)

 

.http 파일로 API를 테스트할 때, 같은 URL이 반복되면 나중에 수정할 때 번거롭다.

이럴 때는 환경 변수 파일을 만들어서 공통 URL을 변수로 등록하고, 코드에서 ${변수명}으로 사용할 수 있다.

 

 

이렇게 하면 아래와 같이 간단하게 작성할 수 있다.

### 1. 게시글 목록 조회
GET {{baseUrl}}

### 2. 개별 게시글 조회
GET {{baseUrl}}/14

### 3. 게시글 등록
< {%
    request.variables.set("time", $timestamp)
%}

POST {{baseUrl}}
Content-Type: application/json

{
  "title": "HTTP 파일로 등록 요청 {{time}}",
  "content": "테스트",
  "writer": "user"
}

 

실행이 완료되면 하단 Services에 잘 뜨는 것을 확인할 수 있다.

 

'Backend' 카테고리의 다른 글

[Spring] Spring AOP(관점지향 프로그래밍)란? - Target, Advice, Proxy, ..  (0) 2025.06.19
[Spring] Spring Framework란? (주요 기능과 어노테이션)  (2) 2025.06.10
'Backend' 카테고리의 다른 글
  • [Spring] Spring AOP(관점지향 프로그래밍)란? - Target, Advice, Proxy, ..
  • [Spring] Spring Framework란? (주요 기능과 어노테이션)
whatdoyumin
whatdoyumin
안녕하세요, 꾸준히 성장하는 개발자..... 입니다
  • whatdoyumin
    whatdoyumin 님의 블로그
    whatdoyumin
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Frontend
      • Backend
      • Study & Course
      • CS & Algorithm
      • DevOps & Infra N
      • Certification
      • Database
      • Project
      • atc.
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    전역상태관리
    탐색알고리즘
    완전탐색
    백엔드
    Pruning
    자바스크립트 코테
    백트래킹
    Spring
    devops
    ai코드리뷰
    브루트포스
    클라우드
    Saa
    99클럽 #코딩테스트준비 #개발자취업 #항해99 #til#dp#동적계획법#코테#백준
    frontend
    AWS자격증
    99클럽 #코딩테스트준비 #개발자취업 #항해99 #til
    githubworkflow
    99클럽 #코딩테스트준비 #개발자취업 #항해99 #til #알고리즘 #브루트포스 #백준 #오목 #완전탐색 #코딩테스트
    타입스크립트
    github자동리뷰
    코드래빗
    결제로직
    코드리뷰자동화
    개발자팁
    TypeScript
    zustand
    coderabbit
    백준 #백준2805번 #나무자르기 #이분탐색 #알고리즘
    ResponseEntity
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
whatdoyumin
[Spring Framework] @RestController로 REST API 만들기 (feat. Talend, HTTP 파일 테스트)
상단으로

티스토리툴바