본문 바로가기
IT/Spring

REST API

by 봉즙 2019. 10. 15.

Respresentational State Transfer : HTTP기반으로 필요한 resource에 접근하는 방식을 정해 놓은 아키텍쳐

resource이란 저장된 데이터, 이미지/ 동영상/문서 등과 같은 파일, 서비스(이메일 전송, 푸쉬 메세지 등)을 포함

 

REST API : REST를 통해 서비스 API를 구현

REST 속성

  1.  서버에 있는 모든 resource는 각 resource 당 클라이언트가 바로 접근 할 수 있는 고유 URI가 존재
  2.  모든 요청은 클라이언트가 요청할 때마다 필요한 정보를 주기 때문에 서버에서는 세션 정보를 보관할 필요가 없다. 이에 서비스의 자유도가 높아지고 유연한 아키텍쳐 적응이 가능
  3.  HTTP 메소드를 사용한다. 모든 resource는 일반적으로 HTTP 인터페이스인 GET, POST, PUT, DELTE 4개의 메소드로 접근 되야한다.
  4.  서비스 내에 하나의 resource가 주변에  연관 된 리소스들과 연결되어 표현이 되어야 한다.

 

REST 구성

  1.  resource
  2. method(GET,POST,PUT,DELETE)
  3. message

 

 

Resource

REST에서는 resource에 접근할 때, URI로 접근

 

URI

URI는 resource의 위치를 나타내는 일종의 식별자

URI 설계 규칙

  1. / 구분자는 계층 관계를 나타내는데 사용
    ex) http://www.findjob/board/attach/a
    해당 사이트에서 a의 정보를 찾을 때 findjob 부터 하위 소속들을 거쳐 a에 도달하는 구조이기에
    URI 마지막 문자로 슬래시를 포함하지 않는다.
  2. URI를 이루는 resource들은 동사보다 명사로 이루어져야 한다.
    resource간에 관계를 표현하는 경우에는 /리소스명/리소스 ID/관계가 있는 다른 리소스명
    ex) GET : /user/{userid}/devices (has관계표현시)
    관계명이 복잡한 경우
    ex) GET : /user/{userid}/likes/dives (관계명이 애매하거나 구체적 표현이 필요한 경우)
  3. URI에서는 _ 보다는 - 을 권장(가독성을 위하여)
  4. URI경로에서는 소문자가 적합 (대소문자 인식하기 때문에)
  5. 파일 확장자는 URI에 포함하지 않는다.
    http://www.abc.com/user/profile.jpg(x)
    파일 확장자를 사용하지 않고 Acept header를 사용한다.
    GET : user/profile
    HTTP/1.1
    Host: www.abc.com
    Accept: image/jpg

 

HTTP 메소드

같은 URI메소드의 성격에 따라 다른 요청을 하게끔 구별해준다.

  • POST : POST를 통해 해당 URIfmf dycjdgkaus flthtmfmf todtjdgksek.
  • GET : GET을 통해 해당 리소스 조회, 리소스 조회수 document에 대한 자세한 정보를 가져온다
  • PUT : PUT을 통해 해당 리소스 수정
  • DELETE : DELETE를 통해 리소스 삭제

 

메시지

HTTP header와 body, 응답 상태 코드로 구성되어 있고 header와 body에 포함된 메시지느 ㄴ메시지를 처리하기 위한 충분한 정보를 포함한다.

 

Body

resource에 대한 정보를 전달(데이터포맷:JSON/XML/사용자 정의 포맷)

 

Header

HTTP 바디에 어던 포맷으로 데이터가 담겨있는지 정의
요청 HTTP 헤더는 'Accept' 항목으로 응답 HTTP 헤더는 'Content-type'으로 컨텐츠 타입을 설명

응답상태 코드

응답상태코드를 통해 리소스 요청에 대한 응답을 할 수 있다.

 

REST 장점

  1. 언어와 플랫폼에 독립적
  2. SOAP(다른 통신방식) 보다 개발이 쉽고 단순
  3. REST가 지원하는 프레임워크나 언어등 도구들이 없어도 구현이 가능
  4. 기존 웹 인프라를 사용가능, HTTP를 그대로 사용하기 때문

REST 단점

  1. HTTP 프로토콜만 사용이 가능
  2. p2p통신 모델을 가정했기 때문에 둘 이상을 대산으로 하는 분산환경에는 유용하지 않다.
  3. 보안, 정책등에 대한 표준이 없기에 관리가 어렵다.

'IT > Spring' 카테고리의 다른 글

토비 스프링 - @Autowired  (0) 2019.10.19
토비 스프링 - 테스트  (0) 2019.10.19
토비 스프링 - XML 이용한 설정  (0) 2019.10.14
토비 스프링 - 의존관계 주입  (0) 2019.10.13
토비 스프링 - IoC  (0) 2019.10.13

댓글