제이슨의 개발이야기
RestFul API 란 무엇인가? 본문
많은 회사들의 자격 요건을 보면 요구 하는 것이 여러가지 있습니다 그중에 하나인 Restful API란 무엇일까?
Rest 의 정의는 Represnetational State Transfer의 약자로
자원을 이름 혹은 표현 으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미 합니다!
이렇게 만 설명 한다면 처음 Rest를 공부하는 입장에서는 이게 무슨 말이지? 라는 생각이 들 수 밖에 없습니다 저도 마찬 가지였거든요
그래서 Restful API 란
클라이언트가 서버에 통신할때 해당하는(내가 원하는 기능 혹은 서비스) Url와 파라미터 를 보내면 서버는 자신의 정의 한 HTTP Method를 통해 찾고자 하는 데이터 를 클라이언트 측으로 보내주는 방식을 REST 방식이라 하며 이러한 방식 혹은 규칙을 잘 지켜서 설계된 API를 Restful API 라고 정의 한다
혹시 제 설명이 틀렸으면 댓글로 달아주시면 수정하겠습니다 ㅎㅎ
그래서 REST 구성은
자원 -> Url
행위 -> HTTP Method
표현(Representation) ->리턴 값
으로 구성 되어있습니다 예를 들면
/users/{id} GET
/users/ PUT 등이 있습니다
REST 아키텍처에 적용되는 6가지 제한 조건
다음 제한 조건을 준수하는 한 개별 컴포넌트는 자유롭게 구현할 수 있다.
- 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 한다
- 무상태(Stateless): 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안 된다
- 캐시 처리 가능(Cacheable): WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
- 잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability와 성능을 향상시킨다.
- 계층화(Layered System): 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.
- Code on demand (optional) - 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
- 클라이언트/서버 구조 : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다..
위키백과 참고 ko.wikipedia.org/wiki/REST
REST의 장단점은 무엇일까?
장점 :
1.HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축 할 필요가 없다
2.HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가저갈 수 있게 해준다
3. 서버와 클라이언트의 역할을 명확하게 분리할 수 있다
4.여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화 한다
단점 :
1. 표준이 존재 하지 않는다
2. 사용할 수 있는 메소드가 4가지 밖에 없다
ex) GET,POST,PUT, DELETE
Rest 가 필요한 이유
1. 애플리케이션 분리 및 통합
2. 다양한 클라이언트의 등장(웹,모바일(안드로이드,iOS)등)
3. 최근의 서버 프로그램은 다양한 브라우저와 모바일 디바이스에서도 통신을 할 수 있어야 한다
참조
gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
'컴퓨터과학' 카테고리의 다른 글
Git Commit Message 규칙 (0) | 2021.08.17 |
---|---|
Gson 라이브러리는 무엇일까? 간단한 JSON 형 변환JSON-> Data Model , Model->JSON (0) | 2021.08.11 |
앱 버전(version) 관리 규칙 공부하기!~ 4.2.1 은 어떤 방식으로? (1) | 2021.08.02 |
프로그래밍 용어 빌드? sdk? jdk? 컴파일? (0) | 2021.03.15 |
Heap 자료 구조 란? (0) | 2021.02.21 |