일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백엔드
- select문
- where
- github
- 웹개발
- 클래스
- mybatis
- DML
- 예외처리
- Java
- 개발자
- select
- 형변환
- 리눅스
- String클래스
- 알고리즘
- Linux
- scanner
- BufferedReader
- 백준
- 자바
- html
- 데이터 조회
- sql문
- order by
- 입출력
- Git
- 자바스크립트
- 프로그래머스 sql 고득점 kit
- JavaScript
- 프론트엔드
- StringBuilder
- 프로그래머스 SQL
- SQL
- 프로그래밍
- 스프링
- MySQL
- 정보처리기사
- 메서드
- 정보처리기사필기요약
- Today
- Total
ToBe끝판왕
[ Swagger ] SpringBoot 3.x 환경 + Swagger 3 활용 API 테스트 (2) 본문
※ Restful CRUD API 테스트 + 포스트맨
https://baby9235.tistory.com/132
※ Swagger 설정 및 Controller , Dto 예시 소스 확인
https://baby9235.tistory.com/133
✅ 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 값을 확인하여 테스트 결과 확인 가능
👉 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 값을 확인하여 테스트 결과 확인 가능
▶️ 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 가 실무에서
아주 활용적이란것을 느끼게 된다.
'■ 공부 기록 > 기능 구현' 카테고리의 다른 글
[ Swagger ] SpringBoot 3.x 환경 + Swagger 3 이해 및 적용 (1) (0) | 2025.01.07 |
---|---|
[ API ] 간단 Restful CRUD API 포스트맨 테스트 ( SpringBoot + Gradle + MyBatis + Mysql ) (1) | 2025.01.02 |
[ JAVA ] 임시 비밀번호 발급 + 메일 전송 (0) | 2024.12.31 |
[ Poi 라이브러리 ] JAVA로 Excel 다운로드 기능 구현 (2) (0) | 2024.04.07 |
[ Poi 라이브러리 ] JAVA로 Excel 다운로드 기능 구현 (1) (0) | 2024.04.07 |