API Request, Response 실전 예제
이전 편에서 API란 무엇인지에 대해 대략적으로 알아보았습니다. 아직 전 편을 보시지 않은 분을 여기에서 읽고 오시는 것을 추천드립니다. =)
조금은 추상적인 예제로 설명하다보니 여전히 명확히 이해가 되지 않을 수 있습니다. (네, 제가 그랬습니다 ㅎㅎ) “그래서 API 요청을 어디서 어디로 어떻게 보내고, 어떻게 정보를 얻는다는거야?”라는 의문이 드시는 분들도 있을텐데요, 이번 편에서는 좀 더 사실적인 예제와 간단하게 할 수 있는 실습도 소개를 해드리겠습니다.
전 편에서 네이버가 어떻게 날씨 정보를 얻는지에 대해 대략적으로 설명드렸습니다. 그런데 네이버는 살아있는 주체도 아닌데 어떻게 날씨 서비스에 정보를 요청하는 것일까요? 또한, 날씨 서비스는 도대체 어떻게 정보를 준다는 걸까요?
바로 네이버의 서버와 날씨 서비스의 서버가 통신을 통해 정보를 주고 받기 때문에 가능한 일입니다. 쉽게 생각하면 네이버 회사가 가진 컴퓨터와 날씨 서비스가 가진 컴퓨터가 서로 통신하는 것입니다. (이 컴퓨터들은 우리가 쓰는 그런 일반 컴퓨터가 아닙니다^^)
여기서, 용어가 헷갈릴 수 있는데요. “서버”는 맥락에 따라 여러가지 의미로 사용된다는 것을 아셔야 이해가 쉬워집니다. 물리적인 의미에서 서버는 컴퓨터의 일종입니다.
하지만 일반적으로 API의 호출과 응답의 맥락에서는 역할에 따라 서버를 지칭하는 말이 달라집니다.
정보를 “요청”하는 입장의 서버 : “클라이언트”
요청에 대한 “응답”을 하는 입장의 서버 : “서버”
바로 가상의 예시를 통해 알아보겠습니다.
(⚠️주의 : 아래의 API는 가상의 예시일 뿐이며, 네이버 서버가 진짜로 이 API를 호출하는 것이 아닙니다. 또한, 설명을 위해 매우매우매우 간략한 요청과 응답을 보여준 것입니다. 실제로는 이보다 훨씬 복잡하게 처리됩니다.)
클라이언트인 네이버 서버는 날씨 서비스에서 제공한 API를 사용하여 특정 도시의 현재 날씨 정보를 요청합니다.
사람의 말처럼 풀어서 설명해볼까요?
GET : 정보 좀 주라.
/weather?city=Seoul : weather이라는 경로(컴퓨터에서 보는 폴더 경로같은 것)에 있는 정보 중 도시 = “서울”의 정보
HTTP/1.1 : HTTP 1.1 버전의 통신 방법을 사용함 (통신 방법은 러프하게 비유하자면 모바일 데이터가 LTE다, 5G다 하는 것과 비슷하다고 볼 수 있습니다)
example.com : 날씨 서비스의 서버 주소 (마치 네이버에 접근할 때 www.naver.com을 치는 것처럼)
이 요청은 네트워크를 통해 정해진 통신 방법(HTTP, HTTPS 등)을 통해 날씨 서비스 서버에 전송됩니다. (우리가 인터넷을 연결해서 메일을 보내는 것처럼)
위의 요청을 받은 날씨 정보 서버는 요청에 맞는 응답값을 네이버 서버에 다시 전달해줍니다. (일종의 답장을 해주는 것이죠) 이걸 흔히 “클라이언트에 응답값을 반환한다”라고 표현합니다.
응답은 보통 특정한 형식의 데이터로 전달됩니다. 아래의 예시는 JSON이라는 형식입니다.
사람의 말처럼 풀어서 설명해볼까요?
HTTP/1.1 200 OK : HTTP 1.1버전의 통신 방법을 사용함, 요청이 성공적으로 처리됨
(어~ 요청 메일 잘왔어! 라는 표현같다고 볼 수 있습니다)
Content-Type: application/json : JSON 타입의 컨텐츠
(나 JSON 타입으로 정리해서 보내줄게)
{
"city": "Seoul",
"temperature": "10°C",
"condition": "Cloudy"
}
도시는 서울이고 온도는 10도이며 상태는 구름많음.
즉, 사람뿐만 아니라 컴퓨터끼리도 소통을 한다는 것을 이해하면 API가 왜 필요한지 좀 더 쉽게 이해하실 수 있습니다. 우리 사람은 말, 글, 눈빛으로 원하는 바를 상대방에게 전달하고 그에 상응하는 대답을 받는 것처럼 컴퓨터 역시 서로 소통(통신)하기 위해서 API를 사용하는 것입니다. 다만, 컴퓨터는 기계이기 때문에 정확하게 정해진 방법과 형식을 지키며 통신해야 하는 것이죠.
다음 편에서는 개발을 하나도 모르는 사람도 API의 요청을 보내볼 수 있는 실습 방법을 소개해드리겠습니다.