반응형

Spring boot로 Rest API 만들기 간단 예제 (6)입니다.

구현한 Swagger UI에서 컨트롤러와 메서드의 이름 및 정보를 설정해보려고 합니다.


 

0. 이전 글 참고

[SPRING BOOT] REST API 간단 예제 - (1) 프로젝트 생성

[SPRING BOOT] REST API 간단 예제 - (2) DB, VO, DAO, XML

[SPRING BOOT] REST API 간단 예제 - (3) Service 만들기

[SPRING BOOT] REST API 간단 예제 - (4) Controller, Postman 출력

[SPRING BOOT] REST API 간단 예제 - (5) Swagger UI 설정

 

 

1. 환경

- Visual Studio Code : 1.61.2 version

- Spring boot : 2.5.7 version / gradle

- java 11

 

 

2. Controller 이름 변경 및 간단 정보

package com.test.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;

import com.test.demo.service.BookInfoServiceImpl;
import com.test.demo.vo.BookInfoVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.PathVariable;

@Api(tags = {"01. Book Info"}, description = "도서 관련 서비스")
@RestController
public class BookInfoController {
.
.
.
}

- 이전에 구현한 Controller 파일입니다.

- 컨트롤러 상단에 @Api 어노테이션을 추가합니다.

 

- tags는 Swagger UI에 보일 컨트롤러의 이름입니다.

- description은 컨트롤러 이름 옆에 보일 간단한 정보입니다.

 

 

3. GET, POST, PUT, DELETE 메소드 정보 추가

package com.test.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import com.test.demo.service.BookInfoServiceImpl;
import com.test.demo.vo.BookInfoVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.PathVariable;

@Api(tags = {"01. Book Info"}, description = "도서 관련 서비스")
@RestController
public class BookInfoController {
  
  @Autowired
  BookInfoServiceImpl bookInfoService;

  @ApiOperation(value = "도서 목록 조회", notes = "도서 목록을 조회한다")
  @GetMapping("/book")
  public List<BookInfoVO> selectAllBookInfo() {
    List<BookInfoVO> allBookInfo = bookInfoService.selectAllBookInfo();

    return allBookInfo;
  }

  @ApiOperation(value = "도서 정보 조회", notes = "도서 정보를 조회한다")
  @GetMapping("/book/{book_key}")
  public BookInfoVO selectByKey(@PathVariable String book_key) {
    BookInfoVO bookInfo = bookInfoService.selectByKey(book_key);

    return bookInfo;
  }

  @ApiOperation(value = "도서 정보 추가", notes = "도서 정보를 추가한다")
  @PostMapping(value="/book/new")
  public List<BookInfoVO> insertBookInfo(@RequestBody BookInfoVO bookInfo) {
      bookInfoService.insertBookInfo(bookInfo);

      return bookInfoService.selectAllBookInfo();
  }

  @ApiOperation(value = "도서 정보 수정", notes = "도서 정보를 수정한다")
  @PutMapping(value="/book/{book_key}")
  public List<BookInfoVO> updateBookInfo(@PathVariable String book_key, @RequestBody BookInfoVO bookInfo) {
      bookInfoService.updateBookInfo(book_key, bookInfo);

      return bookInfoService.selectAllBookInfo();
  }

  @ApiOperation(value = "도서 정보 삭제", notes = "도서 정보를 삭제한다")
  @DeleteMapping("/book/{book_key}")
  public List<BookInfoVO> deleteBookInfo(@PathVariable String book_key) {
    bookInfoService.deleteBookInfo(book_key);

    return bookInfoService.selectAllBookInfo();
  }
  
}

- 위와 같은 컨트롤러 파일입니다.

- 각 메소드 상단에 @ApiOperation 어노테이션을 추가합니다.

 

- value 값에 간단한 정보를 입력해줍니다.

- notes 값으로는 클릭했을 때 보일 상세 정보를 입력해줍니다.

 

 

4. Swagger UI 화면

 

Swagger UI 화면

- 위에서 설정한 대로 컨트롤러의 이름과 정보가 변경되었습니다.

- 아래로 내려가보면 메서드의 정보도 잘 입력되어 있는 것을 볼 수 있습니다.

 

 

5. Swagger UI 세부 정보 화면

 

Swagger UI 세부 정보 화면

- GET으로 된 도서 정보 조회를 클릭했습니다.

- 펼쳐진 화면 상단에 "도서 정보를 조회한다"라는 상세 메시지가 출력된 것을 볼 수 있습니다.

 

 

 

이상으로 Swagger UI의 컨트롤러의 이름 및 정보, 메소드의 이름 및 정보를 설정했습니다.


 

반응형