오늘은 Rest API에서 리소스에 대해 정리를 해보았습니다.
정확하지 않고 틀린 부분이 있을 수 도 있으니
그점 양해 부탁드립니다.
리소스란 무엇인가요?

어디서 이 리소스라는걸 들어봤을까 하고 이미지를 찾아 보았을때 마인크래프트가
떠오르더 라구요 우리는 마인크래프트에서 리소스 리소스 보통은 데이터를 표현 하죠
Rest 에서도 주요 데이터 표현을 리소스 라고 합니다.
REST API는 상호 연결된 리소스의 집합으로 구성됩니다.
이 리소스 집합을 REST API 리소스 모델 이라고 합니다.
— Roy Fielding의 논문
REST에서 정보의 핵심 추상화는 리소스입니다.
이름을 지정할 수 있는 모든 정보는 리소스가 될 수 있습니다.
문서나 이미지, 시간적 서비스(예: "로스앤젤레스의 오늘 날씨"),
다른 리소스 모음, 비가상 객체(예: 사람) 등이 있습니다.
다시 말해, 저자의 하이퍼텍스트 참조의 대상이 될 수 있는 모든 개념은 리소스의 정의에 맞아야 합니다.
리소스는 특정 시점의 매핑에 해당하는 엔터티가 아닌 엔터티 집합에 대한 개념적 매핑입니다.
1-1 싱글톤과 컬렉션 리소스
리소스 는 싱글톤이거나 컬렉션일 수 있습니다.
예를 들어, customers 는 컬렉션 리소스이고 customer 는 싱글톤 리소스
(은행 도메인)입니다.
customersURI " " 를 사용하여 " " 컬렉션 리소스를 식별할 수 있습니다.
URI " "를 사용하여 /customers 단일 " " 리소스를 식별할 수 있습니다 .customer/customers/{customerId}
/customers // 컬렉션 리소스
/customers/{id} // 싱글톤 리소스
1-2 컬렉션 및 하위 컬렉션 리소스
리소스 에는 하위 컬렉션 리소스 도 포함될 수 있습니다.
accounts 예를 들어, 특정 " "의 하위 컬렉션 리소스 " "는 customerURN /customers/{customerId}/accounts (은행 도메인에서)을 사용하여 식별할 수 있습니다.
account 마찬가지로, 하위 컬렉션 리소스 " " 내부의 싱글톤 리소스 accounts 는 다음과 같이 식별할 수 있습니다: /customers/{customerId}/accounts/{accountId}
/customers //컬렉션 리소스
/customers/{id}/accounts //서브 컬랙션 리소스
2-1 리소스 식별자
REST는 리소스 식별자를 사용하여 클라이언트와 서버 구성 요소 간 상호작용에 관련된 각 리소스를 식별합니다.
2-2 하이퍼 미디어
표현의 데이터 형식은 미디어 유형 이라고 합니다 .
미디어 유형은 표현이 처리되는 방식을 정의하는 사양을 식별합니다.
RESTful API는 하이퍼텍스트 처럼 보입니다 . 모든 주소 지정 가능한 정보 단위는 명시적으로(예: link 및 id 속성) 또는 암묵적으로(예: 미디어 유형 정의 및 표현 구조에서 파생) 주소를 전달합니다.
하이퍼텍스트 (또는 하이퍼미디어)는 정보와 제어를 동시에 제공하는 것을 의미 하며, 정보가 사용자(또는 오토마타)에게 선택권을 제공하고 행동을 취할 수 있는 수단이 됩니다.
하이퍼텍스트는 브라우저에서 HTML(또는 XML 또는 JSON)일 필요가 없다는 것을 기억하세요. 기계는 데이터 형식과 관계 유형을 이해하면 링크를 따라갈 수 있습니다.
— 로이 필딩
2-3 자기 설명적
리소스 표현은 자체 설명적이어야 합니다.
클라이언트는 리소스가 직원인지 장치인지 알 필요가 없습니다.
리소스와 연관된 미디어 유형에 따라 작동해야 합니다.
따라서 실제로는 여러 개의 사용자 정의 미디어 유형을 만들 것입니다.
일반적으로 하나의 미디어 유형이 하나의 리소스와 연결됩니다.
모든 미디어 유형은 기본 처리 모델을 정의합니다.
예를 들어, HTML은 하이퍼텍스트의 렌더링 프로세스와 각 요소 주변의 브라우저 동작을 정의합니다.
미디어 유형은 일부 미디어 유형 요소가 "특성이 있는 앵커 요소가 선택하면 -인코딩된 특성에 해당하는 URI에서 검색 요청(GET)을 호출하는 하이퍼텍스트 링크를 생성한다"와 같은 프로세스 모델을 정의한다는 사실 외에는
리소스 메서드GET href/PUT/POST/DELETE/…와 관련이 없습니다
.CDATAhref
2-4 예제
HTTP 기반 REST API에서 관련 리소스에 대한 링크가 있는 블로그 게시물을 나타내는 다음 REST 리소스를 고려하세요.
여기에는 블로그 게시물에 대한 필수 정보와 작성자 및 댓글과 같은 관련 리소스에 대한 하이퍼미디어 링크가 있습니다.
클라이언트는 이러한 링크를 따라 추가 정보를 찾거나 작업을 수행할 수 있습니다.
{
"id": 123,
"title": "What is REST",
"content": "REST is an architectural style for building web services...",
"published_at": "2023-11-04T14:30:00Z",
"author": {
"id": 456,
"name": "John Doe",
"profile_url": "https://example.com/authors/456"
},
"comments": {
"count": 5,
"comments_url": "https://example.com/posts/123/comments"
},
"self": {
"link": "https://example.com/posts/123"
}
}
1. id: 123
리소스의 고유 식별자입니다. 이 경우, 게시물의 ID가 123입니다.
2. title: "What is REST"
게시물의 제목입니다. 여기서는 "REST란 무엇인가"라는 제목을 가지고 있습니다.
content: "REST is an architectural style for building web services..."
게시물의 내용입니다. 이 경우 REST가 무엇인지에 대한 설명이 포함되어 있습니다.
published_at: "2023-11-04T14:30:00Z"
게시물이 게시된 날짜와 시간입니다. 여기서는 2023년 11월 4일 14:30 UTC에 게시되었습니다.
author:
id: 456
name: "John Doe"
profile_url: "https://example.com/authors/456"
comments:
count: 5
comments_url: "https://example.com/posts/123/comments"
self:
link: "https://example.com/posts/123"
오늘은 여기까지 하고 다음시간에 Rest API(이론)을 가지고 오도록 하겠습니다.
아직 어려운점도 부족한 점도 많지만
프론트엔드로 진출하기 위해 한 계단을 오른 프린이 일기였습니다.
끝까지 읽어주신분들 감사합니다~!
뭔가 어려운 단어들이 가득하네요ㅠㅠ 언젠가 저도 이 단어들을 이해할 수 있는날이 왔으면 좋겠어요ㅎㅎ