나는 지금까지 rest 가 편안이라는 뜻인줄 알았다..
편안하게 개발하라고 rest인줄 알았다 .. rest api 가 CRUD 에서
- Read = GET 메서드
- Create = Post 메서드
- Update = Patch 및 Put 메서드
- Delete = Delete 메서드 이용
이렇게 개발자들끼리 개발을 이렇게 하자 라고 정해놓고 하자는 rule 이라고 생각했는데 ..?
내가 알고있는 부분하고 어떤게 다른지를 한번 알아보자!
rest?
"Representational State Transfer"의 약자
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든것을 의미.
-
즉 , 자원의 표현에 의한 상태 전달
-
REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.
REST 의 구체적인 개념
HTTP URI를 통해 자원을 명시하고 , HTTP Method 를 통해 자원에 대한 CRUD Operation 을 적용하는 것을 의미한다
- 즉 , REST는 자원 기반의 구조설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource 를 처리하도록 설계된 아키텍쳐를 의미.
- 웹 사이트의 이미지,텍스트,DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.
API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처입니다. REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌습니다. -AWS https://aws.amazon.com/ko/what-is/restful-api/
REST의 장단점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
2.서버와 클라이언트의 역할을 명확하게 분리할 수 있다.
3.REST API 메서드가 의도하는 바를 명확하게 나타내므로 개발 하는데 수월해짐.
- 표준이 존재하지 않음.
- 사용할 수 있는 Method가 4가지 밖에 없음. =(HTTP Method 형태가 제한적임)
- 구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다. =(PUT,DELETE를 사용하지 못한다.)
REST 아키텍처 스타일
- 무상태
- 계층화 시스템
- 균일한 인터페이스
- 캐시 가능성
REST API란?
- REST 아키텍처 스타일을 따르는 API를 REST API 라고 한다.
RESTful이란?
- REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹서비스 라고 한다. RESTful API라는 용어는 일반적으로 RESTful 웹 API를 나타낸다. 하지만 REST API와 RESTful API라는 용어는 같은 의미로 사용할 수 있다.
Restful 하지 않은 설계란?
- 예약 생성 : POST /reservation/2013012500001?cmd=insert
- 예약 수정 : POST /reservation/2013012500001?cmd=update
- 예약 조회 : POST /reservation/2013012500001?cmd=select
- 예약취소 : POST /reservation/2013012500001?cmd=delete
한 블로그가 예시를 잘 들어서 가져와봤다. 예시
이렇게 모든 CRUD 를 POST 메서드를 이용해서 설계하는것을 RESTful 하지 못한 설계라고 한다.
마지막으로 내가 알고 있는 내용하고 크게 다르지 않다. REST 는 중요한 구성 요소중 하나인 Resource인것이고 이 자원을 핸들링 하기 위해서 HTTP 의 전송 메서드를 사용하는거라고 생각하면 된다. Resource들은 명사로 표시해야 하며 동사가 포함이 되면 혼란을 가져올 수 있다.