[ 네트워크 통신 ]

Yr Yr·2024년 1월 4일
0

TIL

목록 보기
27/39

[ URL 구성요소 ]

-- protocol : 클라이언트와 서버 간의 통신방법을 지정한다. http://는 보안 없는 통신을, https://는 SSL/TLS 암호화를 사용하여 보안된 통신을 나타낸다.

-- domain : API 서버가 호스팅되는 서버의 주소를 나타낸다.

-- port : 포트 번호는 서버에서 API 요청을 수신하는 데 사용되는 포트를 나타낸다. 대부분의 경우 http의 기본 포트는 80이고, https의 기본 포트는 443이다. 일반적으로 생략될 수 있다.

-- path : 서버에서 요청된 자원이나 서비스의 위치를 나타낸다. 경로는 엔드포인트와 연관되어 특정 자원이나 서비스를 식별한다.
(* 엔드포인트: API 요청이 가능한 주소를 나타내는 특정 URL 또는 URI)

-- query parameters : URL에 추가 정보를 전달하는 데 사용된다. 예를 들어, ?page=2&sort=desc와 같이 사용자가 원하는 페이지 번호나 정렬 방법을 서버에 전달할 수 있다.

[ REST API ]

-- REST는 http 프로토콜을 기반으로 하며, 클라이언트와 서버 간의 통신을 위한 규칙을 정의한다.

HTTP Methods

-- GET: 자원을 읽기 위해 사용. (유저 조회)
-- POST: 새로운 자원을 생성하기 위해 사용. 멱등하지 않음 (유저 생성[가입])
-- PUT: 기존 자원을 업데이트하기 위해 사용. 멱등함 (유저 수정)
-- DELETE: 자원을 삭제하기 위해 사용. (유저 삭제[탈퇴])
** 멱등성: 여러번 요청해도 모든 결과값이 동일한 성질)

자원(Resources)

-- REST API에서는 모든 데이터(글,이미지,영상)가 자원으로 표현된다. 이러한 자원은 고유한 식별자(URI)를 갖고 있다.

URI(Uniform Resource Identifier)

-- URI는 자원을 찾을 수 있는 주소를 나타낸다. 예를 들어, 웹사이트의 사용자 프로필을 나타내는 URI는 https://example.com/users/123과 같이 표현될 수 있다.
** URL과 URI의 차이: URI는 자원을 식별하기 위한 일반적인 용어이며, URL은 리소스의 위치를 나타내는 구체적인 형태의 URI이다.

표현(Representations)

-- 자원의 상태는 여러 형식으로 표현될 수 있는데 일반적으로는 JSON 형식을 사용하여 데이터를 표현한다. 클라이언트와 서버 간의 통신은 이러한 표현을 통해 이루어진다.

연결(Stateless Communication)

-- REST API는 클라이언트와 서버 간의 통신을 위해 연결을 유지하지 않는다. 각 요청은 독립적으로 처리된다.

[ URLSession ]

-- 네트워크 데이터를 가져오거나 보내는 작업을 수행한다.

URLSession의 주요 특징

-- 비동기적 네트워킹: 비동기적으로 네트워크 요청을 처리하므로, 네트워크 작업이 백그라운드에서 수행될 수 있다. 이는 앱의 성능을 향상시키고 응답성을 유지하는 데 도움이 된다.
-- 다양한 데이터 전송방식 지원: 데이터를 업로드하거나 다운로드할 수 있으며 JSON,이미지,파일 등 다양한 데이터 형식을 처리할 수 있다.
-- 캐시와 쿠키 관리: 네트워크 응답을 캐싱하고 쿠키를 관리할 수 있는 기능을 제공한다.

[ Decodable, Encodable, Codable ]

Decodable 프로토콜

-- 외부 데이터(JSON)를 스위프트의 데이터 모델로 변환하는 데 필요한 프로토콜. Decodable을 준수하는 객체는 외부 데이터를 해석하고 그 데이터를 객체의 프로퍼티로 매핑할 수 있어야 한다.

Encodable 프로토콜

-- 스위프트의 데이터 모델을 외부 데이터(JSON)로 변환하는 데 필요한 프로토콜. Encodable을 준수하는 객체는 객체의 프로퍼티를 외부 데이터 형식(JSON)으로 인코딩할 수 있어야 한다.

Codable 프로토콜

-- Encodable과 Decodable을 결합한 프로토콜. 외부 데이터를 데이터 모델로 변환, 데이터 모델을 외부 데이터로 변환하는 것을 모두 수행해야 할 때 사용할 수 있다.

0개의 댓글