티스토리 뷰

웹개발(구조)

Representational

수달찌 2021. 3. 3. 23:11

목차

     

    결과물을 보는 게 좋아 무작정 만들기만 했었는데,

    우연찮게 면접 후기를 본 뒤

    (cors가 프론트영역이냐, 백앤드 영역이냐 란 질문이었다)

    개념에 대해서도 알아둬야겠다 생각했다.

    새로운 개념이라니...

    나아가기 위해서 알을 깨야한다.

     

    Representational

    원래 REST부터 접근하려 했는데,

    REST를 이해하기 위해선

    먼저 Representational를 이해해야 할 것 같다.

     

    이해를 위해 구글링을 했는데

    똑같은 인용, 똑같은 문단이 여러 글에서 보이는 것 보니 이를 통해 이해하면 좋을 듯하다.

     

    리소스

     

    자료

     

    HTTP GET 요청을 서버에 보낸 뒤,

    GET https://example.org/greeting
    Host: example.org
    Accept: text/plain, text/html; q=0.9 *; q=0.1
    Accept-Language: en, ko; q=0.9, *; q=0.1

    다음과 같은 메시지 응답을 받았다.

    HTTP/1.1 200 OK
    Content-Length: 6
    Date: Sun, 19 Mar 2017 10:20:47 GMT
    Last-Modified: Sun, 19 Mar 2017 08:00:00 GMT
    Content-Type: text/plain
    Content-Language: en
    Hello

    이때 넘겨받은 'hello'는 리소스가 아니라 representation data 라 한다.

     

    Get 메서드의 정의는

    GET 메서드는 target resource에 대한 현재 선택된 하나의 리소스를 반환한다.

    라 한다.

     

    여기서 target resource란 해당 URI가 가리키는 resource라 한다.

     

    URI란 네트워크상 자원을 가리키는 고유 식별자(ID)라 한다.

     

    리소스란 HTTP 요청의 대상이다.

     

    hello라는 텍스트가 리소스가 아니고, 환영의 의미를 담은 문서가 리소스이다.

     

    이해

    Get 메서드를 써서 목표 URI가 가진 네트워크 자원을 리소스라 한다.

    그런데 이 리소스는, 우리가 보는 텍스트 형식이 아니라 의미를 담은 문서이다.

     

    representation

    리소스의 특정 시점의 상태를 반영하는 정보

    representation data와 representation metadata로 구성된다.

    위의 Hello

    representation data이며,

     

    Content-Type: text/plain
    Content-Language: en가

    representation metadata이다.

     

    representation metadata에 따라

    여러 가지

    representation 가 될 수 있다.

     

    Content-Type: text/plain
    Content-Language: ko
    
    안녕하세요

     

    Content-Type: text/plain
    Content-Language: de-DE
    Hallo!

     

    Content-Type: text/html; charset=UTF-8
    Content-Language: en
    
    <html><body>hello</body></html>

    이 중에 하나를 선택한다.

     

    클라이언트와 서버 간의 내용 협상(Content Negotiation)을 통해 선택한다.

    선택 주체는 협상 방법에 따라 다르다.

     

    사전 협상(proactive negotiation)은 서버가 선택한다.

    클라이언트가 GET 메서드에(요청) "Accept-Langouage:ko"헤더를 포함해 요청하면, 이에 맞는 문서를 보여준다.

    서버가 URI목록으로 된 선택지를 제공하고, 클라이언트가 선택하는 사후 협상(reactive

    이는 선택지마다 URI가 다르므로, 클라이언트가 리소스 중 하나를 선택한다고 해도 된다.

     

    서버가 URI 목록으로 

     

    이해

    클라이언트가 GET메서드(요청)할 때 Type, Language 등을 포함해 요청한다.

    그럼 클라이언트와 서버 간의 설정에 따라 Representation이 선택된다.

    이때, URI이 가진 리소스(의미를 담은 문서)는 하나이다.

    이를 표현하는 Representation이 여러 가지인데, 이를 하나 선택해서 전달하는 것이다.

     

    REST의 respresentation

    웹 페이지가 representation의 전송을 통해 이루어지는 것.

    REST는 Representational State Transfer의 줄임말로써, representation 상태 전송이다.

    위의 representation이란 개념이 여기서 발생하였다.

     

     

     

     

    '웹개발(구조)' 카테고리의 다른 글

    쿠키와 세션  (0) 2021.04.19
    스키마 Schema  (0) 2021.03.08
    Dom이란  (0) 2021.03.07
    HTTP  (0) 2021.03.05
    CORS 에러  (0) 2021.03.04
    댓글
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/05   »
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    글 보관함