REST API
REST API를 알아보기 전에, REST에 대해 간단하게 말하고 넘어가자.
"REST는 HTTP기반으로 필요한 자원에 접근하는 방식을 정해놓은 아키텍쳐이다."
그렇다면 여기서 말하는 자원은 무엇일까?
자원은 저장된 데이터(DBMS)를 포함, 이미지/동영상/문서(pdf 등)와 같은 파일, 서비스(이메일 전송, 푸쉬 메시지 등)를 모두 포함한다.
그리고 REST API는 REST를 통해 서비스 API를 구현한 것을 말한다.
우리가 예를 들어서 기상청에서 날씨 데이터를 활용한 서비스를 만들고자 할 때, 기상청 API를 사용하게 될것이다.
REST를 활용한다고 가정했을때, 우리는 기상청의 자원에 접근해야 될 것이다.
REST에서는 자원에 접근 할 때 URI(Uniform Resource Identifier)를 사용하게 된다.
URI를 알았으면, http 메소드를 활용해 자원을 가져오거나, 지우거나 하는 행위들을 할 수 있다.
그 종류로는 GET, POST, PUT, DELETE가 있다.
주의할 점이, 같은 URI라도 http 메소드에 따라 하고자 하는 결과들이 달라질 수 있는데, 이를 endpoint라고 한다.
쉽게 설명해서 endpoint는 http메소드 + URI 인 셈이다.
Express
Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다.
Express.js라고도 하며 , 쉽게 설명하자면 서버를 쉽게 만들기 위한 프레임워크라고 보면 된다.
Routing
라우팅은 Express를 사용하여 REST API를 개발하는 기본 요소이다. 라우팅 은 앱이 특정 API 엔드 포인트에 대한 클라이언트 요청에 응답하는 방법을 정의하는 프로세스를 말한다.
예를 들어, 클라이언트는 questions 목록을 검색하기 위해 API 의 / questions 경로에 GET 요청을 보낼 수 있다 . 이 endpoint를 GET '/ questions'라고 한다.
동일한 서버의 다른 endpoint는 POST '/ questions'일 수 있다.
Express를 통해 각 API 엔드 포인트를 처리 할 경로 를 설정할 수 있다 . 각 라우트마다 클라이언트가 해당 엔드 포인트에 요청을 보내면 Express가 실행할 콜백 함수를 제공한다.
클라이언트 측 HTML, CSS 및 JavaScript 파일이 서버 측 앱과 어떻게 통합될까?
일반적으로 사용되는 MVC 패턴과 같은 몇 가지 웹앱 개발 모델이 있다. 일부 패턴에서는 앱의 백엔드가 서버의 클라이언트 측 파일을 직접 수정하는 서버 측 렌더링을 사용할 수 있습니다.
이러한 시나리오에서 서버 측 코드는 해당 파일을 클라이언트에 반환 하기 전에 HTML 템플릿에 데이터를 직접 삽입한다 .
이 경우 백엔드로 REST API를 개발 중이므로 서버는 요청시 데이터 를 사용하여 클라이언트에 응답한다 . 따라서 클라이언트 측 파일은 해당 데이터에 대한 요청을 보낸 다음 브라우저 내에서 적절하게 HTML 파일에 데이터를 채 운다.
파일을 수정하지 않고 단순히 리턴하는이 프로세스를 정적 파일 제공(serving static files) 이라고 한다.
프런트 엔드 용 정적 HTML, CSS 및 JavaScript 파일을 public서버 의 폴더에 보관하고 브라우저는 파일을 요청할 때 그대로 해당 파일을 그대로 반환한다.