본문 바로가기
JavaWeb

자바 웹 공부 42 - SpringBoot + postman + lombok

by 넴넴L 2023. 2. 28.
728x90

어제는 실행 환경을 세팅을 하고 끝이 났다

 

 

오늘은 저번에 만들었던 mysqlConnect파일에서 

이런 걸 했었다.(오래됐지만 그래도 기억은 난다)

 

이제 이거를 만들어줄 것이다.

 

Controller
  • MVC 디자인 패턴의 Controller에 해당
  • View와 Model의 접점
  • Client의 Request에 따라 모델(DB)의 상태를 변경
  • Request URL의 end point(resource path)에 해당하는 메서드를 실행
  • End point에 대한 Routing을 담당
  • Service의 결과를 Client에게 Response

 

한번 만들어보자

화살표 친 곳에서 새 package를 만들어주자

만든 패키지 우클릭해서 새 클래스를 만들어주자

저걸 쳐주고 ctrl + 스페이스바로 import 해주자

 

 

@RestController
  • JSON 형태의 Response를 반환하기 위한 Controller 임을 명시
  • REST API 개발을 위해 사용됨 (Response로 HTML을 반환하지 않음)
  • @Controller + @ResponseBody의 형태
    React의 Route와 비슷하다고 한다.

 

 

@GetMapping(path)
  • REST API의 GET method를 이용한 Request 중 ‘path’에 해당하는 end-point에 대한 라우팅을 담당
  • HTTP 메서드 중 GET 방식의 요쳉에 대한 처리를 지정할 때 사용

이러고 실행을 해보자 boardApplication을 직접 실행해 보자

HelloWorld라고 뜬다.

주의할 점은 com.example.board이게 철자가 같아야 한다.

 

@RequestMapping(pattern)
  • Request URL에서 특정 패턴에 해당하는 Request를 담당하는 Controller 임을 명시
  • https://host:port/’ 이후 패턴
    해당 클래스를 특정 Request URL 패턴에서 사용하도록 지정

이렇게 하고 실행을 하게 되면 Hello World는 사라지고 Whitelabel이 뜬다.

4040/apis/를 쳐보면

다시 Hello World가 뜬다.

 

이건 VSCODE에서 했을 때 route와 똑같다.

 

@PathVariable(path)
  • https://host:port/path/{data} 형태로 데이터를 받아오기 위한 어노테이션
  • path의 일종이기 때문에 필수로 입력
    GET / DELETE 방식에서 사용할 수 있음
    URL Path로 클라이언트로부터 데이터를 받아서 변수로 사용

PathVariable을 쓰면 위와 똑같이 사용이 가능하다.

 

이게 좀 귀찮은데 할 때마다 서버를 닫고 다시 켜줘야 한다..

이렇게 쳐보면 자신이 친 대로 출력이 된다.

나는 Nemnem을 쳤다.

 

@PostMapping(path)
- REST API의 GET method를 이용한 Request 중 ‘path’에 해당하는 end-point에 대한 라우팅을 담당

 

browser는 Get방식으로 통신이(요청) 가능한데 Post방식으로 하려면

우선 구글에 postman을 치고 download를 하자

이런 화면이 뜰 것이다.

플러스를 누르고

이렇게 적어주자 그리고 send를 눌러주면 Body 부분에 자신이 써놨던 것이 출력이 되어야 한다.

post 눌러주고 send를 누르면

아까 적었던 POST page Response가 뜬다.

 

HTTP 메서드 중 POST 방식의 요청에 대한 처리를 지정할 때 사용
GET과 POST의 차이점은 기록이 남고 안남고의 차이이다.
data 보낼 때 차이점은 get방식은 path에 무조건 붙여서 보내줘야 하는데
post는 url로 보낼 수 없고 body에 담아서 보내줘야 한다.

 

이렇게 하고 다시 postman을 켜서

쳐 준 뒤 body클릭 -> raw -> text로 맞추기 -> 아무거나 적어주자 -> send 눌러주면

404가 뜬다. 또한, 404는 해당 리소스를 찾을 수 없다는 것이다.

 

Eclipse를 껐다 다시 실행하고 send를 눌러보면

404가 아닌 데이터가 들어간 값이 뜨게 된다.

 

@RequestBody

POST / PATCH 방식에서 사용할 수 있음
클라이언트로부터 request body로 데이터를 받고자 할 때 사용할 수 있음.

 

이렇게 추가해 주고 서버를 껐다가 켜고 postman으로 가서 send

 

@PatchMapping
HTTP 메서드 중 PATCH 방식의 요청에 대한 처리를 지정할 때 사용

 

서버 껐다 켜고 -> postman patch -> delete -> send

 

@DeleteMapping
HTTP 메서드 중 Delete 방식의 요청에 대한 처리를 지정할 때 사용

위에 적었던 것들이 C(reate) R(ead) U(pdate) D(elete)이다.

 

파일을 만들어주고

적어주고

source로 가서 

constructor, getter/setter, toString, 빈 공간 추가해 주자

빈 공간은 아래사진이다. 

MainController로 가서

이렇게 해주고 서버를 껐다 켜고 postman으로 가서

쳐주고 body로 가서 다 지우고 send를 하면

이렇게 400이라고 에러가 뜬다.

400은 필수 데이터를 넘겨주지 않아서 뜬것이다.

 

body에서 text가 아닌 JSON으로 바꿔주고 

send를 눌러보면

여기에 맞춰서 써야 하니 주의하자

잘못된 fomating 형태로 보내도 400이라는 에러가 뜨게 된다.

 

MainController로 가서

dto 패키지에 새로운 클래스를 만들어고 코드를 추가시켜 주자

아까 하던 거 똑같이 해주자

source로 가서 만들어주자

그리고 Main으로 와서 코드 바꿔주고 껐다 켜고

postman으로 가서  get방식으로 바꾸고 send

 

lombok을 좀 알아보자

Eclipse에는 lombok이 잘 안 받는다고 한다.

이게 롬복인데

구글에 검색해 보면 download가 있으니 다운할 수 있다.

자신의 eclipse가 있는 경로로 Specify로 맞춰주고 install 하면 된다.

이렇게 되면 설치가 된 거다

다시 Eclipse를 켜보자

상단에 Help -> About Eclipse IDE -> lombok 설치 확인

이게 떠져 있으면 설치가 된 것이다.(아이콘을 엄청 찾고 있었는데 시간낭비했다..)

 

PostTestRequestDto로 가서

이렇게만 해놓고

이렇게 해주면

아까 우리가 만들었던(지웠던 것)들을 알아서 다 만들어주는 어노테이션들이다.

코드가 길지도 않고 깔끔해지는 장점이 생긴다.

 

똑같이 GetTestRequest도 해주자

 

@Data
- @Getter, @Setter, @ToString, @RequiredArgsConstructor, @EqualsAndHashCode 어노테이션이
합쳐진 어노테이션

@NoArgsConstructor
- 매개변수가 없는 생성자를 작성해 주는 어노테이션

@AllArgsConstructor
- 모든 멤버변수를 매개변수로 받는 생성자를 작성해주는 어노테이션

 

이러면 부가적인 코드들을 작성할 필요가 없으니 로직에만 집중할 수 있게 된다.

 

build.Gradle의 dependencies에

implementation 'org.springframework.boot:spring-boot-starter-validation'을 적어주자

유효성 검사에 쓰이는 라이브러리이다

 

써주고 board 우클릭 -> gradle -> refresh

PostDTO로 가서

나는 NotBlank가 안돼서 직접 import 해줬다.

postman으로 가서

이렇게 쓰고 send를 눌러보자(안 뜰 것이다)

 

main에 여기로 와서 @request 앞에 @Valid를 넣고 import 시켜주고 서버 실행 후 send를 누르면

400이 뜨게 된다

 

이러면 controller에 관한 기본 개념은 다한 거 같다.