반응형

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

이번에는 CRUD를 실행할 수 있는 Controller를 구현하겠습니다.

실행 결과는 postman으로 확인할 예정입니다.


 

0. 이전 글 참고

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

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

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

 

 

1. 환경

- Visual Studio Code : 1.61.2 version

- Spring boot : 2.6.2 version / gradle

- java 11

 

 

2. BookInfoController.java

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 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;

@RestController
public class BookInfoController {
  
  @Autowired
  BookInfoServiceImpl bookInfoService;

  @GetMapping("/book")
  public List<BookInfoVO> selectAllBookInfo() {
    List<BookInfoVO> allBookInfo = bookInfoService.selectAllBookInfo();

    return allBookInfo;
  }

  @GetMapping("/book/{book_key}")
  public BookInfoVO selectByKey(@PathVariable String book_key) {
    BookInfoVO bookInfo = bookInfoService.selectByKey(book_key);

    return bookInfo;
  }

  @PostMapping(value="/book/new")
  public List<BookInfoVO> insertBookInfo(@RequestBody BookInfoVO bookInfo) {
      bookInfoService.insertBookInfo(bookInfo);

      return bookInfoService.selectAllBookInfo();
  }

  @PutMapping(value="/book/{book_key}")
  public List<BookInfoVO> updateBookInfo(@PathVariable String book_key, @RequestBody BookInfoVO bookInfo) {
      bookInfoService.updateBookInfo(book_key, bookInfo);

      return bookInfoService.selectAllBookInfo();
  }

  @DeleteMapping("/book/{book_key}")
  public List<BookInfoVO> deleteBookInfo(@PathVariable String book_key) {
    bookInfoService.deleteBookInfo(book_key);

    return bookInfoService.selectAllBookInfo();
  }
  
}

- Service 단에서 만든 메서드와 같은 이름으로 모두 만들어줍니다.

- 대체적으로 select는 @GetMapping, insert는 @PostMapping, update는 @PutMapping이나 @PatchMapping, delete는 @DeleteMapping을 사용합니다.

- 이번 예제에서는 update를 Put으로 사용했습니다.

 

- Mapping 태그를 보면 옆에 경로가 적혀있습니다.

- 해당 경로에 진입하면 만들어 놓은 select, insert, update, delete를 실행할 수 있습니다.

 

- Mapping 괄호 안에 {}로 되어있는 부분은 파라미터로 받는 부분입니다.

- 경로에 파라미터를 받는 부분이 있다면 @PathVariable로 선언해주면 됩니다.

 

 

3. Postman 사용법

- Swagger UI를 연동하지 않았으므로 Postman에서 결과를 확인해보았습니다.

- 먼저, Postman을 다운로드 합니다.

- 프로젝트와 Postman을 실행하고, 컨트롤러에서 만든 대로 경로를 입력합니다.

 

 

3-1. selectAllBookInfo

모든 책 목록 조회

- GET을 선택하고 경로를 입력한 다음 Send 버튼을 누른 화면입니다.

- 아래 화면과 같이 모든 책 목록이 JSON 형식으로 뿌려집니다.

 

 

3-2. selectByKey

책 key 검색

- book_key를 이용해 책을 검색한 화면입니다.

- 해당 키를 가진 책의 정보만 출력됩니다.

 

 

3-3. insertBookInfo

책 추가

- 책 데이터를 추가한 모습입니다.

- 추가할 책의 정보를 Body에서 raw JSON 형태로 적은 후 Send 합니다.

- insert는 POST 형식을 사용합니다.

 

 

3-4. updateBookInfo

책 정보 수정

- PUT을 선택하고 Body에 수정할 정보를 입력합니다.

- book_key가 1000인 책의 정보를 수정하였습니다.

 

 

3-5. deleteBookInfo

책 데이터 삭제

- DELETE를 선택하고 삭제할 book_key를 입력합니다.

- book_key가 1000인 데이터를 삭제했습니다.

- 삭제 후, 책 전체 목록을 반환하였습니다.

 

 

4. 다음 글 참고

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

[SPRING BOOT] REST API 간단 예제 - (6) Swagger UI 꾸미기

 

 

 

이상으로 Spring boot Rest API 간단 예제에서 Controller 생성과 Postman 결과 출력까지 해보았습니다.


 

반응형