본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


Web 지식

웹 개발 기본 공부 1 -Web의 구성 , REST

반응형

 

WEB

 

(World Wide Web )은 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간을 말한다 .

 

Web의 용도는 아래와 같이 나눌 수 있다 .

 

Web Site

 

 Google , naver, daum , facebook 등 HTML로 구성된 여러 사이트들

 

API(Application Programming Interface) * Web Service

 

KaKAo Open API , Google Open Api 등 

 

User Interface

 

Chrome , Safari, Explorer , Smart Watch , IP TV 등

 

Web의 기본 3요소

 

REST(Representational State Transfer :자원의 상태전달)- 네트워크 아키텍처

 1.Client ,Server : 클라이언트와 서버가 서로 독립적으로 분리 되어 있어야 한다.

 

 2.Stateless : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.

 

 3. Cache : 클라이언트는 서버의 응답을 Cache(임시저장) 할 수 있어야 한다.

   클라이언트가  Cache를 통해서 응답을 재사용할 수 있어야 하며 , 이를 통해서 서버의 부하를 낮춘다.

 

 4.계층화(Layered System) : 서버와 클라이언트 사이에 , 방화벽 ,게이트웨이, Proxy 등 다양한 계층 형태로 구성이 

   가능해야 하며 , 이를 확장 할 수 있어야 한다.

 

 5. 인터페이스 일관성 : 인터페이스의 일관성을 지키고 , 아키텍처를 단순화시켜 작은 단위로 분리하여 ,클라이언트 , 서  버가 독립적으로 개선 될 수 있어야 한다. 

 

 6. Code on Demand(Optional) : 자바 애플릿 , 자바스크립트 , 플래시 등 특정한 기능을 서버로 부터 클라이언트가 전달 받아 코드를 실행 할 수 있어야 한다. 

 

다음의 인터페이스 일관성이 잘 지켜졌는지에 따라 , REST를 잘 사용했는지 판단 할 수 있다 .

 

1.자원의 식별

  

웹 기반의 REST 에서는 리소스 접근시 URI를 사용 한다 .

 

예시)

https: // ugo.co.kr/user/100

 

Resource: user

식별자: 100

 

 

2. 메시지를 통한 리소스 조작

 

 Web에서는 다양한 방식으로 데이터를 전달 할 수 있다 . 

그 중 가장 많이 사용하는 방식은 HTML,XML,JSON , TEXT 등 이 있다 . 이 중에서 어떠한 타입의 데이터인지를 알려주기 위해서 HTTP Header 부분에 content-type을 통해서 데이터의 타입을 지정해 줄 수 있다 . 

 또한 리소스 조작을 위해서 데이터 전체를 전달 하지 않고 , 이를 메시지로 전달한다 . 

 

예시) 서버의 user라는 정보의 전화번호를 처음에는 number 라 정하고 , 이 정보를 Client와 주고 받을 때, 

그대로 사용하고 있다면 , 후에 서버의 resource 변경으로 phone-number로 바뀌게 된다면 Client는 처리하지 못하고

에러가 난다 .

 

 이러한 부분을 방지 하기 위해 , 별도의 메시지 형태로 데이터를 주고 받으며 , client-server 가 독립적으로 확장 

가능하도록 한다 .

 

3.자기서술적 메시지 

 

 요청하는 데이터가 어떻게 처리 되어져야 하는지 충분한 데이터를 포함 할 수 있어야 한다 .

HTTP 기반의 REST에서는 HTTP Method와 Header 정보 , 그리고 URI의 포함되는 정보로 표현할 수 있다.

 

GET: https://ugo.co.kr/user/100 , 사용자의 정보 요청

POST :  https://ugo.co.kr/user  , 사용자의 정보 생성

PUT :  https://ugo.co.kr/user , 사용자의 정보 생성 및 수정

DELETE :  https://ugo.co.kr/user/100 , 사용자 정보 삭제 

 

그 외에 담지 못 한 정보들은 URI의 메시지 또는 Header의 정보로  전달할 수 있다.

 

4.Application 상태에 대한 엔진으로써 하이퍼미디어 

 

REST API 를 개발할 때 단순히 Client 요청에 대한 데이터만 응답 해주는 것이 아닌 관련된  리소스에 대한 LINK 정보 까지 같이 포함 되어져야 한다 . 

 

 

반응형