세계에는 굉장히 다양한 웹 서비스가 있습니다. 날씨 정보, 상품 데이터, 주가, 환율 등의 다양한 정보를 웹에서 찾을 수 있습니다. 이러한 웹 사이트 중에는 웹 API를 제공하는 곳이 있습니다.

 

웹 API는 어떤 사이트가 가지고 있는 기능을 외부에서도 쉽게 사용할 수 있게 공개한 것을 의미합니다. 원래 API(Application Programming Interface)는 어떤 프로그램 기능을 외부의 프로그램에서 호출해서 사용할 수 있게 만든 것을 의미합니다. 간단하게 서로 다른 프로그램이 기능을 공유할 수 있게 절차와 규약을 정의한 것 입니다.

 

웹 API도 비슷합니다. 이랍ㄴ적으로 HTTP 통신을 사용하는데, 클라이언트 프로그램은 API를 제공하는 서버에 HTTP 요청을 보냅니다. 그러면 서버가 이러한 요청을 기반으로 XML, JSON 형식 등으로 응답합니다.

 

대부분의 클라이언트 프로그래밍 언어는 XML과 JSON 형식의 데이터를 쉽게 처리할 수 있습니다. 따라서 굉장히 쉽게 원하는 형태로 사용할 수 있습니다.

 

하지만 왜? 사이트에서는 API를 제공을 해주는 것일까요? 

 

물론 개발자와 제공자의 공동 이익을 목적으로 선의를 가지고 API를 제공하는 서비스도 있습니다.

 

예를 들면 게임 League of Legend의 경우 과연 전적검색을 위한 자료는 어디서 가져오는 것일까요?

 

전적 검색을 제공하는 사이트에서는 Riot에서 제공하는 API를 제공 받아 게임 유저들에게 필요한 정보만을 추출하고 정리해서 보여주는 것입니다.

 

그 밖에도 그 정보를 바탕으로 승률, 픽률, 상대 상성등도 상황에 맞는 데이터를 추출하여 분석하고 그것을 유저들에게 보여주는 것입니다.

 

게임 말고도 옥션이나 지마켓, 11번가, 아마존(amazon)등의 사이트 역시 상품 검색 API를 제공하는데 이를 제공함으로써 개발자들이 관련된 어플리케이션을 만들면 판매 기회를 조금이라도 올릴 수 있게 됩니다.

 

또 다른 이유는 API를 제공하는 웹 사이트의 경우 좋은 정보를 가지고 있다는 의미가 될 것이고, API 서비스를 제공하지 않는 경우 크롤링의 표적이 되기 때문입니다.

 

만약 크롤링을 많은 사람들이 하게 된다면 서버에 부담이 될 것이기 때문에 미리 웹 API서비스를 제공해 주기도 합니다.

 

방금까지는 장점에 대해서만 말씀드렸습니다. 하지만 웹 API도 단점은 분명히 있는데요, 첫 번째는 웹 API 제공자의 사정으로 인해 웹 API가 없어지거나 사양 변경이 일어날 수 있다는 것입니다. 애플리케이션을 개발할 때는 이를 반드시 고려해야 합니다. 편리하게 사용하던 웹 API가 어느 날 갑자기 사라지면 애플리케이션이 동작하지 않기 때문입니다. 물론 이는 웹 사이트를 직접적으로 스크레이핑할 때도 발생할 수 있는 문제입니다.

 

 

 

'Basic' 카테고리의 다른 글

HTTP, 쿠키, 쎄션이란?  (0) 2021.01.29

1. HTTP 통신

웹 브라우저와 웹 서버는 HTTP라고 불리는 통신 규약(프로토콜)을 사용해서 통신합니다. HTTP 통신브라우저에서 서버로 요청(request)하고, 서버에서 브라우저로 응답(respense)할 때 어떻게 할 것인지를 나타내는 규약입니다.

 

예를 들어, 웹 브라우저 주소를 입력(예- http://www.naver.com)하고 요청을하면 그 주소에 맞는 웹 서버를를 찾을 것이고 이를 발견하게 되면 그 웹 서버(Naver)에 index.html이라는 파일을 보고 싶다고 요청을 합니다. 서버가 이러한 요청을 받으면 index.html파일의 내용을 응답해주고 요청한 사람은 Naver화면을 볼 수 있게 되는 것입니다.

 

이처럼 HTTP통신은 요청과 응답으로 만들어 집니다.

HTTP 통신 과정을 나타낸 이미지

2. 쿠키

HTTP 통신은 기본적으로 무상태 통신입니다. 무상태 통신이란 같은 URL에 여러 번 접근해도 같은 데이터를 돌려주는 통신을 말합니다. 조금 더 자세히 말하면 이전에 어떤 데이터를 가져갔는지 등에 대한 정보(상태: state)를 전혀 저장하지 않는 통신을 말합니다.

 

이로 인해 무상태 HTTP 통신으로는 회원제 사이트를 만들 수 없습니다. 과거의 정보가 저장되지 않으면 장바구니아 어떤 상품을 추가했는지, 페이지를 이동할 때마다 로그인을 했는지 알수가 없기 때문입니다.

 

그래서 웹 브라우저 쿠키(Cookie)라는 구조가 추가됐습니다. 이는 웹 브라우저를 통해 방문하는 사람의 컴퓨터에 일시적으로 데이터를 저장하는 기능입니다.

 

다만, 쿠키에는 제약이 있습니다. 1개의 쿠키에 저장할 수 있는 데이터의 크기가 4096바이트로 제한됩니다.

 

3. 세션

쿠키는 HTTP 통신 헤더를 통해 읽고 쓸 수 있습니다. 또한 방문자 또는 확인자 측에서 원하는 대로 변경할 수 있습니다. 따라서 변경하면 문제가 생길 수 있는 비밀번호 등의 비밀 정보를 저장하기에는 알맞지 않습니다.

 

그래서 세션이라는 구조를 사용하게 됐습니다. 사실 세션도 쿠키를 사용해 데이터를 저장한다는 점은 같습니다만, 쿠키에는 고유자 고유 ID만 저장하고, 실제 모든 데이터에는 제한이 없다는 것도 중요한 특징입니다.

 

HTTP 통신은 무상태 통신이지만 세션을 이용하면 쿠키에 기록돼 있는 고유 ID를 키로 사용해 상태를 변수로 확인할 수 있습니다. 따라서 통신을 계속해서 진행하는 것 같은 상태유지통신(stateful)을 구할 가능하게 해줍니다.

 

일단 방문자가 처음 웹 사이트에 방문할 때 쿠키에 세션 ID를 기록합니다. 그리고 웹 서버에는 세션 ID를 기반으로 데이터 파일을 만들고, 여기에 저장하고 싶은 변수의 값을 저장해둡니다. 그리고 사용자가 다시 서버에 접근하면 쿠키의 세션 ID를 기반으로 저장한 변수를 확인하는 것입니다.

'Basic' 카테고리의 다른 글

API란?  (0) 2021.02.06

+ Recent posts