REST API란 무엇이고 , 설계 및 구현은 어떻게 하는것인가..?
내가 개발하는데 참고가 되는 사이트에서 REST라는 것을 다루고 있는데
정말 하나도 모르겠는 것이다.
그래서 REST는 무엇이고 설계 및 구현은 어떻게 하는지 공부하게 되었다.
왜 REST에 대한 관심을 가지게 되었는가..?
1. 프론트엔드 front-end와 백엔드 Back – End가 분리되기 시작
2. 새로운 서비스 개발을 위해 개발작업 진행
3. Json 형태로 데이터를 제공하는 API를 제공하자고 동의
4. RequestMethod 와 URL을 이용한 정의
5. View 영역이 포함되지 않은 서버사이드 Server-side 개발을 진행
REST API란 무엇인가..?
1. API ( Application Programming Interface ) 란 무엇인가??
è java에서 예를 들자면 다른 클래스의 메소드를 사용하는 거소 api를 이용하는 것이다.
è 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며 , 서로 정보를 교환가능 하도록 한다
REST에 대해서 자세히 알아보자.
1. 2000년 로이 필딩이 박사학위 청구 논문에서 REST ( Repressentational State Transfer ) 를 소프트웨어 아키텍처 스타일로 제안한 후 OPEN API를 개발하는 기본으로 급속도로 확산되고 있다.
2. SOAP이 서비스 지향 구조인 것과 달리 자원지향구조(ROA : Resource Oriented Architecture) 로 웹 사이트의 컨텐츠 , DB의 내용 등을 전부 하나의 자원으로 파악하여 각 자원의 고유한 URI( Uniform Resource Identifier ) 를 부여하고 , 해당 자원에 대한
CRUD ( Create , Read , Update , Delete ) 작업을 HTTP 기본 명령어인 POST , GET , PUT ,DELETE 를 통해서 처리한다.
아래를 통해서 이해해 볼까.
Method 로는 POST , GET , PUT , DELETE
CRUD 로는 Create , Read , Update , Delete
SQL 로는 INSERT , SELECT , UPDATE , DELETE
REST API 란 REST 구조 스타일에 적합한 Web API를 REST API라고 한다.
REST API를 제공하는 웹 서비스를 RESTful하다고 할 수 있다.
REST API 구현 사례를 들자면
Ex ) 네이버 개발자센터 , 다음 , google Developer , Twitter Developer 새주소 REST API 제공
REST API 정보제공 방식은 XML , JSON , RSS가 있다.
REST API 설계 전 생각해야 하는 것들은 무엇이 있을까??
1. 제공하려고 하는 xx자원은 무엇인가??
2. 지원할 Content -type 은 어떤것들이 있는가 ??
è XML , JSON , RSS
3. 구현한 REST API 이용방법을 어떻게 설명할 것인가??
è Javadoc ? , 별도로 REST API를 사용하는 방법을 기술한 매뉴얼 , 결론은 둘다
REST API 설계를 할 때는 다음과 같은 것들이 고려된다고 한다.
1. REST API를 통해 제공하려고 하는 자원은 무엇인가??
2. URI 경로 path는 언제 복수로 써야하는가??
3. 리소스의 상태를 업데이트하려면 , 어떤 메소드를 사용해야 하는가??
4. CRUD가 아닌 연산을 어떻게 URL에 매핑하는가??
5. 특정한 시나리오에 가장 적합한 HTTP 응답은 무엇인가??
6. 리소스 상태 표현의 버전은 어떻게 관리할 수 있는가??
7. JSON에 포함된 하이퍼링크는 어떻게 구조화 하는가??
URI( Uniform Resource Identifier ) 식별자 설계
# 식별자라고 할 수 있는 유일한 일은 대상을 나타내는 것이다.
# 역참조를 할 때가 아니라면 다른정보를 얻기 위해서 URI의 내용을 들여다보지 말아야 한다
1. URI를 만들때부터 REST API 리소스 모델을 클라이언트 모델에 전달할 수 있어야 한다
2. URI형태는 어떨까?? 총 6가지의 규칙이 정해져 있다.
ㄱ. 슬러시 구분자 ( / ) 는 계층관계를 나타내는데 사용한다
ㄴ. URI 마지막 문자로 슬래시 ( / ) 를 포함하지 않는다
ㄷ. 하이픈 ( - ) 은 가독성을 높이는 데 사용한다
ㄹ. _ 은 사용 x
ㅁ. URI 경로는 소문자가 적합
ㅂ. 파일 확장자 ( json , xml ) 는 URI에 포함시키지 않는다.
3. 리소스 모델링 : 웹서비스의 기반이 되는 URI는 REST API의 자원이 된다
4. 리소스 원형
ㄱ. 도큐먼트 : 객체 인스턴스 or 데이터베이스 레코드와 유사한 개념
ㄴ. 컬렉션 : 서버에서 관리하는 디렉터리 리소스
ㄷ. 스토어 : 클라이언트에서 관리하는 리소스 저장소
요청메소드 ( GET / POST / PUT / DELETE )
1. 메소드별 용도
ㄱ. GET : 리소스 상태의 표현을 얻을 때 사용
ㄴ. POST : 컬렉션에 새로운 리소스를 만들거나 컨트롤러를 실행할 때 사용
ㄷ. PUT : 새로운 리소스를 스토어에 추가하거나 기존 리소스를 갱신할 때
ㄹ. DELETE : 리소스 제거
2. REST 문제점 :
ㄱ. 사용할 수 있는 메소드가 4가지 밖에 없다.
이 문제를 어떻게 해결할 것인가??
è 메일을 보낸다 : Send mail 이라는 행위의 의미를 바꾼다
è POST / employees / 1 / send – mail 식으로 : 직원 1에게 메일을 보낸다.
문맥상으로 의미 변환이 불가능한 경우
è PUT 과 URI를 사용하여 제어 control의 의미를 부여
è PUT / employees / 1 / grade : 직원 1의 등급을 변경한다
# REST 기반의 아키텍처를 설계하려면 가장 어려운 것이 URI를 어떻게 정의하냐
인데 , REST의 장점 중 하나는 이 URI와 HTTP Method만으로도 쉽게 의미를
파악할 수 있다는 것이기 때문에 , URI 정의에 많은 노력을 기울이는 것이 좋다
응답상태코드
1. 1xx : 전송 프로토콜 수준의 정보 교환
2. 2xx : 클라이언트 요청이 성공적으로 수행됨
3. 3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함
4. 4xx : 클라이언트의 잘못된 요청
5. 5xx : 서버쪽 오류로 인한 상태코드
REST 장점 / 단점
장점
1. 기본 웹 인프라를 그대로 이용할 수 있다.
2. 쉽다
단점
1. 표준이 없어 관리가 어렵다
출처 : https://github.com/ihoneymon/rest-api-study
'프로젝트 > 버스카드조회' 카테고리의 다른 글
웹서비스 TEST 프로그램인 SOAP_UI를 설치해 보자 . (0) | 2018.09.17 |
---|---|
Open_API ( based java ) (0) | 2018.09.16 |
HttpURLConnection 클래스 (0) | 2018.09.16 |
J2EE Client 개발 환경 설정하기 (0) | 2018.09.15 |
Web Service와 Web Service의 구성요소 (0) | 2018.09.15 |
#IT #먹방 #전자기기 #일상
#개발 #일상