ToBe끝판왕

[ Swagger ] SpringBoot 3.x 환경 + Swagger 3 활용 API 테스트 (2) 본문

■ 공부 기록/기능 구현

[ Swagger ] SpringBoot 3.x 환경 + Swagger 3 활용 API 테스트 (2)

업그레이드중 2025. 1. 10. 18:20
반응형

 



 


 

 

 

※  Restful CRUD API 테스트 + 포스트맨 

https://baby9235.tistory.com/132

 

[ API ] 간단 Restful CRUD API 포스트맨 테스트 ( SpringBoot + Gradle + MyBatis + Mysql )

SpringBoot + 간단한 CRUD Api   1) Spring initializr 사용하여 SpringBoot 프로젝트 생성   https://start.spring.io/   •  Project  :  사용할 빌드 툴 선택 •  Language  :  사요할 개발 언어 선택 •  Spring Boot 

baby9235.tistory.com

 

 

 

 

※  Swagger 설정 및 Controller , Dto 예시 소스 확인

https://baby9235.tistory.com/133

 

[ Swagger ] SpringBoot 3.x 환경 + Swagger 3 이해 및 적용 (1)

✅  스웨거 ( Swagger ) 알아보기  1) 스웨거 ( Swagger ) 란 ? -  RESTful API를 설계 , 구축 , 문서화 , 테스트하는데 사용되는 오픈소스 소프트웨어 프레임워크   ( = API를 개발 / 관리 하는 과정을 효율

baby9235.tistory.com

 

 

 

✅  Swagger 로 API 테스트 하기

💡  RestAPI 를 Swagger 를 통해서 응답 테스트를 진행해보자

 

 

 

 

▶️ GET 메서드 API 테스트 ( = 게시글 조회 )

 

•  게시글 조회 API ( GET 메서드 ) 소스

    /**
     * Restful API Get 메서드
     * Swagger 적용
     * @param userId
     * @return
     */
    @GetMapping("/board")
    @Operation(summary = "게시글 조회", description = "게시글을 전체 조회 혹은 아이디로 조회 합니다.")
    @ApiResponse(responseCode = "200", description = "조회 성공", content = @Content(schema = @Schema(implementation = BoardDto.class)))
    public List<BoardDto> boardList(@Parameter(description = "사용자 아이디") @RequestParam (value = "userId", required = false) String userId) {

        if(userId == null ) {
            // 게시글 전체 리스트 조회
            return boardService.selectAllBoardList();
        }

        // ID로 게시글 리스트 조회
        return boardService.selectListByUserId(userId);
    }

 

 

•  좌측 상단에서 GET 메서드와 URI 그리고 설명을 확인할 수 있다.

•  Try it out 버튼을 클릭하면 Parameters 부분의 사용자 아이디 부분에 파라미터 값을 입력 가능하게 변환된다.

•  Parameters 부분의 사용자 아이디를 입력하지 않고 실행 , 아이디를 입력하고 실행하여 조회 결과를 확인할 수 있다.

•  응답 부분의 HTTP 상태코드 , HTTP 응답 Body , HTTP. 응답 Header 값을 확인하여 테스트 결과 확인 가능

 

GET 메서드를 열었을떄 나타나는 화면

 

 

Try it out 버튼을 클릭하였을 때

 

 

파라미터 입력하지 않고 실행 ( 전체 조회 )

 

 

devetest1 사용자아이디 값을 주고 응답 확인 테스트

 

 

 

👉  userId 는 Controller 의 게시글 조회 메서드에서 @RequestParam 어노테이션이 적용되어 있어 

      URI의 쿼리 파라미터로 사용된다.

 

 

 


 

 

▶️ POST 메서드 API 테스트 ( = 게시글 등록 )

 

•  게시글 등록 API ( POST 메서드 ) 소스

    /**
     * Restful API POST 메서드
     * Swagger 적용
     * @param boardDto
     * @return
     */
    @PostMapping("/board")
    @Operation(summary = "게시글 등록", description = "게시글을 등록합니다.")
    @ApiResponse(responseCode = "200", description = "등록 성공")
    public Map<String, Object> createBoard(@RequestBody @Schema(implementation = BoardDto.class) BoardDto boardDto) {

        return boardService.insertBoard(boardDto);
    }

 

 

•  좌측 상단에서 POST 메서드와 URI 그리고 설명을 확인할 수 있다.

•  Try it out 버튼을 클릭하면 Parameters 부분의 사용자 아이디 부분에 파라미터 값을 입력 가능하게 변환된다.

•  게시글 등록 메서드의 경우 요청값을 @RequestBody BoardDto 를 활용하여 HTTP 요청 본문(Body) 에서

   데이터를 읽어와 파라미터로 전달한다. ( 타입은 BoardDto 이다. )

•  응답 부분의 HTTP 상태코드 , HTTP 응답 Body , HTTP. 응답 Header 값을 확인하여 테스트 결과 확인 가능

 

POST 메서드 /board 를 열었을때

 

 

요청 메시지 본문(Body) 에 BoardDto 의 프로퍼티 마다 값을 부여해 전달한다.

 

 

HTTP 상태 코드 200 과 응답메시지를 수신함을 확인할 수 있다.

 

 


 

 

▶️ PUT 메서드 API 테스트 ( = 게시글 수정 )

 

•  게시글 수정 API ( PUT 메서드 ) 소스

 /**
     * Restful API PUT  메서드
     * Swagger 적용
     * @param seq
     * @param boardDto
     * @return
     */
    @PutMapping("/board/{seq}")
    @Operation(
            summary = "게시글 수정",
            description = "게시글을 수정합니다. 요청 본문에는 수정할 게시글의 데이터, 경로 변수로 수정할 게시글의 글번호를 전달합니다.",
            responses = {
                    @ApiResponse(responseCode = "200", description = "수정 성공"),
                    @ApiResponse(responseCode = "400", description = "잘못된 요청. 요청 데이터가 유효하지 않거나 필수 데이터 누락"),
                    @ApiResponse(responseCode = "404", description = "수정하려는 게시글을 찾을 수 없음"),
                    @ApiResponse(responseCode = "500", description = "서버 오류")
            },
            parameters = {
                    @Parameter(name = "seq", description = "수정할 게시글의 고유 글번호", required = true, example = "1")
            }
    )
    public Map<String, Object> updateBoard(@PathVariable int seq, @RequestBody @Schema(implementation = BoardDto.class) BoardDto boardDto) {

        boardDto.setSeq(seq);
        return boardService.updateBoard(boardDto);
    }

 

•  좌측 상단에서 PUT메서드와 URI 그리고 설명을 확인할 수 있다.

•  Try it out 버튼을 클릭하면 Parameters 부분의 사용자 아이디 부분에 파라미터 값을 입력 가능하게 변환된다.

•  @PathVariable 어노테이션을 활용하여 URI 경로에 있는 변수 seq을 메서드 파라미터에 바인딩한다.

•  @RequestBody 어노테이션을 활용하여 HTTP 요청 본문에서 데이터를 읽어와 메서드 파라미터에 바인딩한다.

    ( 타입은 BoardDto 이다. )

•  응답 부분의 HTTP 상태코드 , HTTP 응답 Body , HTTP. 응답 Header 값을 확인하여 테스트 결과 확인 가능

 

 

경로변수와 요청메시지 본문에 데이터를 담아 요청

 

 

 


 

 

👉  GET 메서드로 전체 리스트 조회를 하여 데이터가 정상적으로 다 변경이 되었는지 확인을 해본다.

•  게시글 전체 조회의 결과로 글번호 6에 POST 메서드를 통한 게시글 등록의 결과 확인 가능

•  게시글 전체 조회의 결과로 글번호 4에 PUT 메서드를 통한 게시글 수정의 결과 확인 가능

 

 

 

•  게시글 삭제 API 의 경우 @Hidden 어노테이션을 활용하여 문서에서 제외되었다.

 

 

 

👉  POSTMAN 을 통해서도 Restful API 테스트를 진행해보았고, Swagger 를 통하여 API 문서 작성과

      동시에 테스트까지 진행해보았는데 API 문서 자동화 + 테스트까지 가능한 Swagger 가 실무에서

      아주 활용적이란것을 느끼게 된다.

 

 

 

반응형
Comments