본문 바로가기
Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

HTTP API

by hk27 2022. 1. 17.

 

API는 언제쯤 보내주실 수 있나요?

 

 

웹에 대해서 아무것도 모를 때, 학교 수업의 팀 프로젝트로 웹을 만든 적이 있습니다.

저는 백엔드를 맡았는데, 프론트엔드를 맡으신 분이 API는 언제쯤 보내주실 수 있냐고 물어보셔서 API가 뭐지? 싶었던 적이 있습니다.

그때 API 예시를 보여주셨고, 그것을 보고 추측해서 보내드린 API는 이런 형태였습니다.

 

HTTP 메소드는 뭔지, 요청의 URL은 어떻게 들어오는지, 파라미터와 바디에는 무슨 데이터가 넘어오는지, 어떤 결과 json을 넘길지 등등의 정보를 작성해서 보내드렸습니다.

 

여기서 API는 대체 뭘까요?

지금까지도 API는 어떤 식으로 요청이 들어오면 어떤 식으로 응답할지 정도의 정보라고 생각하고 있었는데, 정확한 개념을 오늘 학습하게 되어서 정리합니다. 

 

HTTP API는 서버가 전송하는 데이터 중 하나입니다.

서버(웹 서버, WAS)가 전송하는 데이터는 3종류가 있습니다.

1. 정적 리소스

2. 동적 HTML 페이지

3. HTTP API

한 개씩 알아봅시다.

 

1. 정적 리소스

고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공합니다.

어떤 유저가 와도 이미 저장된 같은 파일을 보내줍니다. 

 

2. HTML 페이지

WAS에서 동적으로 필요한 HTML 파일을 생성해서 전달합니다.

동적으로 생성한다는 것은 고정된 HTML 파일이 전송되는 것이 아니라, 유저와 상황에 따라 다른 HTML 파일을 전달하는 것입니다. 예를 들어서 어떤 사이트에 userA가 접속하면 "userA"님 이라고 뜨고, userB가 접속하면 "userB"님이라고 뜨는 것은 동적으로 HTML 파일이 생성된 것입니다.

 

3. HTTP API

HTML이 아니라 데이터를 전달합니다. 주로 json 형식을 사용합니다. 

데이터만 전송하면 화면은 어떻게 띄울까요?

화면이 필요하면, 클라이언트가 별도로 처리해줘야 합니다. 

앱, 웹 클라이언트, 서버 to 서버 등 다양한 시스템에서 호출됩니다.

서버에서는 데이터만 내려줍니다.

그리고 클라이언트에서 데이터를 받아서 화면을 만듭니다. 혹은 다른 서버와 데이터를 통신하기 위해 사용되기도 합니다. 

 

 

 

그렇다면 HTTP API는 대체 뭘까요? 데이터를 전송하는 것?

 

HTTP는(HyperText Transfer Protocol)는 웹에서 정보를 주고받을 수 있는 프로토콜입니다[1]. 웹에서 데이터를 전송하는 약속입니다. 

API(Application Programming Interface)는 컴퓨터나 컴퓨터 프로그램 사이의 연결입니다[2]. 컴퓨터와 인간을 연결하는 게 아니라, 컴퓨터와 컴퓨터, 혹은 프로그램과 프로그램을 연결하는 것이 API입니다.

 

그렇다면 두 단어가 더해진 HTTP API는 웹에서 컴퓨터나 프로그램을 연결하여 정보를 주고받는 것을 의미한다고 파악할 수 있습니다. 

 

인프런의 질문 답변 게시판에서, 김영한 개발자님이 작성해주신 답변을 보면서 HTTP API의 더욱 명확한 의미를 배울 수 있었습니다.  

HTTP API는 HTTP를 사용해서 서로 정해둔 스펙으로 데이터를 주고받으며 통신하는 것으로 이해하시면 됩니다[3].
HTTP API라고 하는 것은 응답 결과로 HTML이 아닌 데이터를 전달받는 것을 말합니다[4].

즉 HTTP API는 HTTP를 사용한 약속을 지키며 데이터를 전달하는 것을 말하는 것입니다. 

클라이언트에서 요청을 보내면, 서버에서 약속한 대로 데이터를 전달해주는 것이죠.

 

그렇다면 데이터를 전달하는 것 자체만 HTTP API일까요?

이 글의 초반에 API 문서를 프론트엔드 분께 전달할 때, HTTP 메소드는 뭔지, 요청의 URL은 어떻게 들어오는지, 파라미터와 바디에는 무슨 데이터가 넘어오는지, 어떤 결과 json을 넘길지 등등의 정보를 작성해서 보내드렸다고 말씀드렸는데요, 이것은 HTTP API로 볼 수 없는 것일까요?

그것은 아닌 것 같습니다. 

 

생활코딩님의 영상에서는 REST API(HTTP API와 거의 같은 개념)를 아래와 같이 정의하고 있습니다[5]. 

기계와 기계가 웹을 이용해서 통신할 때 사용하는 규칙으로, 리소스는 URI로 행위는 메소드로 결과는 응답 코드로 사용한다. 

 

통신에 사용하는 규칙이라는 설명에 더해서, uri, 메소드, 응답 코드 등의 설명을 덧붙이신 것을 확인할 수 있습니다.

 

종합적으로 고려해보면, HTTP API는 폭넓은 의미로 사용되고 있다고 해석할 수 있을 것 같습니다.

서버에서 데이터(특히 json)를 보내는 것이 HTTP API이며, 클라이언트와 서버가 서로 정해둔 스펙(URI, 메소드, 응답 코드)도 API를 설명하는데 이용될 수 있습니다.

 

누군가 저에게 'HTTP API'가 무엇인가요? 라고 묻는다면,

웹에서 클라이언트와 서버가 통신할 때 HTTP를 사용해서 서로 정해둔 스펙으로 데이터를 주고받으며 통신하는 것을 의미하며, 서버는 보통 응답 결과로 json 형태의 데이터를 전송합니다. 서로 정해둔 스펙에는 URI, HTTP 메소드, 응답 코드 등이 포함됩니다. 

라고 대답할 것 같습니다. 

 

참고로 HTTP API라는 말보다 REST API라는 말을 더 많이 사용하는 것 같습니다. 둘의 차이점은 아래 글에서 확인하실 수 있습니다. 보통은 둘이 같은 의미로 사용되나, REST API는 제약 조건을 더 만족해야 합니다. 

https://www.inflearn.com/questions/126743

 

HTTP API vs REST API - 인프런 | 질문 & 답변

HTTP API를 기반으로 한 것이 REST API인가요? 무슨 차이가 있는지 궁금합니다. - 질문 & 답변 | 인프런...

www.inflearn.com

 

 

 

인프런  '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의를 듣고 공부하며 정리한 자료입니다. 

잘못된 부분은 피드백 주시면 감사하겠습니다. 

글 읽어주셔서 감사합니다 :-)

 

참고자료

[0] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술, 섹션 1. 웹 애플리케이션 이해 https://www.inflearn.com/course/스프링-mvc-1

[1] https://ko.wikipedia.org/wiki/HTTP

[2] https://ko.wikipedia.org/wiki/API

[3] https://www.inflearn.com/questions/126743

[4] https://www.inflearn.com/questions/137287

[5] https://www.youtube.com/watch?v=PmY3dWcCxXI 

 

 

 

댓글