Skip to content

p-ej/restStudy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring MVC로 Rest CRUD 구현해보기

Config : Spring Framework(5.1.1), Windows 10, Eclipse 2021.03

Test Framework : JUnit 4.12

RestFul Web Service

Spring MVC RestFul Develope

RESTFul

API의 엔드포인트가 단 하나이고, 요청과 응답에 대한 메타데이터는 HTTP 프로토콜을 사용해서 전달해야 함.
요청 메서드는 POST, GET, PUT, DELETE를 사용한다.
요청 URL에는 동사를 사용하지 않아야 한다.

Spring Layered Architecture

스프링의 계층은 프레젠테이션(Controller), 비즈니스(Service), 데이터(Model, DAO) 영역으로 나뉜다.

Controller Create

스프링 레거시 프로젝트를 생성하면 기본 패키지 안에 HomeController가 있다. 기본 컨트롤러는 구동이 잘되는지만 확인하고 새로운 컨트롤러를 만들었다.
RestTestController Create
해당 컨트롤러로 들어오는 전체 매핑은 " / "으로 지정
@RestController 어노테이션 지정 후 test메소드 생성 매핑 어노테이션은 GetMapping, test 메소드 리턴 값은 문자열 아무거나.

reststudy1

jsonTest Method 생성하기

JSON 데이터로 출력해줄 Map 객체를 생성 후 아무 문자를 입력해 put 해보자 리턴값은 map 객체를 생성한 변수를 리턴해주면 된다.

log 정보

INFO : com.rest.test.RestTestController - json type map value : '{rest test key=im value hihi}'

실행 결과 이미지

reststudy2

Service Create

Controller에서 요청 자체를 처리하지 않게하기위해 Service로 나눈다.

Service는 패키지와 클래스 생성 후 @Service 어노테이션을 설정해주면 된다. Service와 Controller 로직을 나눈 후 (코드 작성 후) 실행결과

Controller 에 불러올 Service 객체를 DI를 통해 주입받기

2가지 방법이 있다. 컨트롤러 생성자를 통해 주입 받는 방법과 @AutoWired 어노테이션을 통해 주입받는 방법. reststudy4

실행 결과 이미지

reststudy3

Spring MVC REST Ful CRUD Develope

RestStudyController Create

Service와의 통신을 위해 @Autowired로 의존설정을 함.

reststudy5

  • Get(모든 유저, 특정 유저)
  • Post(유저 등록)
  • Put(유저 정보 수정)
  • Delete(유저 삭제)

UserService(interface), UserServiceImpl Create

Dao와의 통신을 위해 @Autowired로 의존설정을 함.

reststudy6

UserDao(interface), UserDaoImpl Create

DB 미설정으로 임시 Users 리스트 객체를 생성함으로써 DB 형식의 구조를 갖춤.

reststudy7

User model Create

User의 데이터를 입력또는 가져올 데이터 모델 객체다.

패키지와 클래스, 인터페이스 구조 (앞에 RestTest가 붙여져 있는것은 신경쓰지 말것.)

reststudy8

Postman 대신 Test 코드로 uri 호출해보기

Controller 테스팅

TDD를 간접적으로나마 경험해보고 싶어 작성한 Test Controller 해보니까 조금 힘들다..

테스트 패키지에 클래스 생성하기

reststudy9

RestStudyControllerTest

reststudy10 어노테이션 설정들, 소스는 깃허브 레포 참고

Get (전체, 특정유저)

  • perform.get

reststudy11 reststudy12

Post (유저 등록)

  • perform.post

reststudy13

Put (유저 정보 수정)

  • perform.put

reststudy14

Delete(유저 삭제)

  • perform.delete

reststudy15

perform()

  • DispatcherServlet에 요청 get, post, delete, put 등의 메소드를 제공함

Postman으로 Rest Api 동작 확인하기

포스트맨 호출 테스트 확인 (글 정리)

  • Get URI 요청 (정보 불러오기)

reststudy16

  • Post URI 요청 (유저 등록)

reststudy17

  • Put URI 요청 (유저 정보 수정)

reststudy18

  • Delete URI 요청 (유저 삭제)

reststudy19

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages