REST

REST 정리 (GET 조회, POST 생성, PUT 수정, DELETE 삭제)

pjh8838 2024. 6. 25. 10:00
반응형

1. Representational State Transfer

- 웹 어플리케이션 개발 방법론 중의 하나로서 클라이언트와 서버간의 상태정보를 표현하는 방식을 의미

 ( 어제까지 개발 방법론이 SOAP임 )

REST는 개발방법론 중 하나

 

REST가 트렌드지만

SOAP은 기본이라서 할 줄 알아야한다

 

1) SOAP 아키텍쳐

클라이언트    ---------        서버

(웹브라우저)

 

2) REST 아키텍쳐 (XML/ JSON 통신) (XML은 잘 안씀)    (요청 @RequestBody, 응답 @ResponsBody)

@RestController - @Controller, @ResponseBody를 결합

 


2. REST 디자인 가이드 구글링 

 

디자인 패턴 종류 ( MVC, 빌더패턴, 프론트 컨트롤러, 싱글톤 )  - 면접에도 나올 수 있음

 


 

3. REST 표현

 1) 데이터는 URI에 포함되어 전달된다

  ex> 이전 SOAP 방식에서 회원을 삭제하는 작업

     URL에 쿼리스트링

 

  ex> REST 방식에서 회원을 삭제하는 작업

     REST는 URL에 값을 전달

 

 

 2) 클라이언트 요청 방식

    ex> 이전 SOAP 방식

           GET : 조회

           POST : 생성(저장), 수정, 삭제

 

REST 방식 ( 이제 URL로 어떤 기능인지 표시되지 않고 메서드로 표시된다, 하나만 만들어서 기능별로 쓰는게 REST 장점)

           GET : 조회

           POST : 생성(저장)

           PUT : 수정

           DELETE: 삭제

 

기본적으로 form을 사용하는 html에서는 GET/POST만 지원

따라서 도구가 필요하다. ( curl, postman, 크롬브라우저의 플러그인 Talend Test API )

우리는 이거 씀

 


 

4. REST 실습

1) 의존성

  2) application.properties

 

 

 

***** 중요


 

REST 프로젝트 실행

크롬 Talend Test API 들어가서

서비스, 리퀘스트 생성

리퀘스트에서 URL 입력 후 send (서버는 켜놔야함)

 

리퀘스트를 여러개 생성해서 GET, POST, PUT, DELETE에 따라 사용

 


 

lombok 라이브러리

lombok은 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리

 

lombok 설치 후 어노테이션쓰면 자동으로 DTO의 생성자 게터세터 toString 다 만들어줌

 logger, 빌더패턴도 제공

 

 

가 .의존성 등록

 

나 .현재 사용 중인 sts(eclipse)에 lombok을 설정

lombok 홈페이지에 가서 jar 파일 다운 ( c 밑에 사용자 밑에 ssginc58 안에 받음)

 

jar 다운로드 후 cmd창에서 저장 위치로 이동

lombok.jar 실행

java -jar lombok.jar 치면 창이 뜸

우리가 쓰는 실행파일을 찾아서 넣는다 ex> sts를 사용하면 sts 실행파일을 찾아서 선택 후 - install

성공하면 sts가 있는 파일에 lombok이 들어가있다

 

작업하는 프로젝트 가서 maven update하고 sts 재시작

 


lombok 사용 (기본 방식)

DTO에 Data 어노테이션을 쓰면 옆에 보이는걸 다 가져온다

 

DTO에 @Data만 썼는데 다 가져올 수 있음

 

 

dto에 추가
컨트롤러

 


lombok 빌더패턴 방식 ( 권장 )

 

DTO
컨트롤러

 


 

5. mysql 연동

properties 설정

 

의존성 추가
DB 생성

 

DTO에서 lombok 써서 생성자, 게터세터, toString 전부 생략

************************************* DTO 생성 (lombok 사용)
매퍼 생성
매퍼 생성

 

서비스 생성

 

서비스 생성

 

컨트롤러

 

결과


6. 파라미터 전달

 - REST는 기본적으로 데이터를 URI에 포함되어 전달된다.

ex > SOAP 방식

 

 

ex > REST 방식

    GET http://localhost:8090/app/persons/10        => 아이디가 10인 데이터를 찾는다

     GET http://localhost:8090/app/persons/20

 

변수로 받아준다

    @GetMapping("/persons/{변수}")    < == URL은 마지막 값까지 포함

 

    @PathVariable("변수") String id

 


파라미터 전달 실습

************************************* DTO 생성 (lombok 사용)

 

매퍼

 

매퍼.java
서비스임플
컨트롤러

 

원하는 id 값 입력
결과

 


ex>

http://localhost:8090/app/persons/10/부산

PathVariable 뒤에("address") 생략 가능

 

 

ex>

http://localhost:8090/app/persons/10/address/부산

PathVariable 뒤에 ("id") 생략 가능

 


6.  데이터 저장 ( Post 방식 )

 - 전달되는 데이터는 JSON 형식

{

* "id": 50,

* "username":"유관순", ===> PersonDTO에 저장

* "birthdate":"2024-12-24"

* }

 

-> API test body에 붙여준다

 

 - header에 전달되는 타입을 지정해야 된다

     Content-Type: application/json

 

-> API test header에 붙여준다

 


 

데이터 저장 ( Post 방식 ) 실습      ( API tester headers 적기 )

 

매퍼.xml
매퍼.java, 서비스

 

서비스
컨트롤러

 

날짜 포맷 수정

 

 

api tester에 입력


7. 데이터 수정 ( PUT 방식 )     ( API tester headers 적기 )

 

- PUT 방식

- JSON + @PathVariable(where절에서 사용) 같이 사용 가능

- header에 전달되는 타입을 지정해야 된다 

 

   Content-Type: application/json

 

매퍼.java
매퍼, 서비스
서비스
컨트롤러

 

API test

 


 

8. 데이터 삭제

- DELETE 방식

 

매퍼
매퍼, 서비스
서비스
컨트롤러

 

40 넣으면

 

40 삭제

 

728x90
반응형

'REST' 카테고리의 다른 글

REST 기반의 Spring Security 적용 ( 보통 카피해서 씀 )  (0) 2024.06.26
필터링(filtering)  (0) 2024.06.26
I18N  (0) 2024.06.26
폼 유효성 체크  (0) 2024.06.26
POST 응답처리 개선하기  (0) 2024.06.25