Rest API & HTTP

Jisu·2023년 9월 6일
0

Network

목록 보기
2/7

배경

정말 많이 듣고 또 사용했던 Rest API와 HTTP에 대해서 정리해보자.


Rest API

URL을 통해서 자원의 위치를 명시하고 HTTP Method를 통해 CRUD를 요청하는 API 설계 방식이다.

우리가 협업 때 많이 사용하는 Notion은 개발자들을 위한 API를 지원하고 있다. Notion API는 대표적인 Restful API이다.
Notion API

다음과 같이 Database나 페이지의 CRUD에 GET, PATCH, DELETE, POST가 사용되고 있다.

해당하는 HTTP 메소드를 명시한 다음에는 URL을 명시하고 있다.
제시된 URL을 작성해서 알맞은 HTTP 메소드를 통해 HTTP 통신을 하면 원하는 데이터를 받을 수 있다.

HTTP 통신

연결된 컴퓨터(인터넷)끼리 정보를 주고받을 때 정보의 송/수신 양식 중 하나이며 현대에서는 HTTP 통신 방식이 표준이 되었다.

클라이언트측에서 데이터를 받기 위해 서버측으로 request를 보내며 이 때 HTTP 통신이 사용된다.

request는 3가지로 구성된다.

1. start line
http method, URL 등이 포함됨
2. headers
Key:Value 값으로 구성되어 해당 request에 대한 추가 정보를 담고 있다.
3. body
reqeust를 보내는 실제 정보를 담고 있다.

코드를 통해 살펴보자

        let parameters = "{\n\"filter\": {\n\"property\": \"category\",\n\"select\": {\n\"equals\": \"\(category)\"\n}\n}\n}"
        let postData = parameters.data(using: .utf8)

        var request = URLRequest(url: URL(string: "https://api.notion.com/v1/databases/\(DataBaseInfo.databaseID)/query")!,timeoutInterval: Double.infinity)

        // MARK: HTTP Header
        request.addValue("2022-06-28", forHTTPHeaderField: "Notion-Version")
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue(DataBaseInfo.token, forHTTPHeaderField: "Authorization")

        // MARK: HTTP Method
        request.httpMethod = "POST"

        // MARK: HTTP Body
        request.httpBody = postData

위 코드는 Notion API에서 특정 데이터를 필터링해서 응답을 받아오는 코드이다.

먼저 URL을 사용해서 URLRequest를 만든다.

Notion API에서 명시한 대로 header정보와 http method 정보를 설정한다.

문자열 형태로 json 타입의 body를 만들고 인코딩시켜 httpBody에 저장한다.

이렇게 원하는 정보를 HTTP 통신을 통해 POST하고 필터링된 데이터를 받아올 수 있다.

다음번에는 HTTP 통신 과정에 대해서 좀 더 자세히 알아보자!

References

HTTP 관련 블로그 글

profile
비즈니스에 관심많은 DevOps Engineer 장지수입니다.

0개의 댓글

관련 채용 정보