Node.js
이제 본격적으로 Node.js를 이용해서 웹 개발자라면 한 번쯤은 구현을 해봐야 된다는 게시판을 구현해보려고 합니다.
프레임워크로는 가장 대중적으로 사용되는 express를 사용할 것이고 아직 익숙하지 않기 때문에, 소개 때도 다짐했듯이 공식문서를 최대한 참고하면서 구현해보겠습니다.
우선 Node.js와 RESTful API가 무엇인지부터 학습을 한 뒤 구현을 해보겠습니다.
Node.js
Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 환경.
JavaScript는 원래 브라우저에서 실행되는 스크립트 언어입니다. Node.js는 브라우저 외부에서도 JavaScript 코드를 실행할 수 있는 환경을 제공해줍니다.
즉, 서버 측에서 JavaScript 코드를 실행할 수 있도록 해줍니다.
브라우저는 JavaScript 코드를 실행하기 위해 JavaScript 엔진을 사용하는데, Node.js는 Chrome 웹 브라우저에 내장된 V8 JavaScript 엔진을 사용하여 JavaScript 코드를 실행합니다.
V8은 Google에서 개발한 오픈 소스 JavaScript 엔진이라고 합니다.
RESTful API
API(Application Programming Interface)
API란 소프트웨어 간에 데이터를 교환하고 상호 작용하기 위한 인터페이스. 즉 소프트웨어 간의 통신을 위해 따라야 하는 규칙을 정의하는 것
쉽게말하면 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단이라고 생각하면 된다.
REST(Representational State Transfer)
웹 서비스의 아키텍처 스타일 중 하나로써 네트워크 기반의 소프트웨어 아키텍처를 설계하고 구축하는 데 사용되며, 리소스를 식별하고 상태를 전달하기 위해 주로 HTTP 프로토콜을 사용합니다.
아래와 같은 주요 특징을 갖습니다.
- 자원 중심(Resource-Centric): 모든 자원에는 고유한 식별자(URI)가 있으며, 이러한 자원은 서버에 저장되어 있습니다. REST에서는 이러한 자원을 조작하기 위해 HTTP 메서드를 사용합니다.
- HTTP 메서드 활용: REST는 HTTP 프로토콜의 다양한 메서드(GET, POST, PUT, DELETE 등)를 활용하여 자원을 조작합니다.
- 상태를 관리하지 않음(Stateless): 서버는 클라이언트의 상태를 저장하지 않습니다. 각 요청은 모든 필요한 정보를 포함하고 있어야 하며, 서버는 이를 통해 요청을 처리합니다.
- 캐시 가능(Cacheable): 클라이언트는 서버의 응답을 캐시할 수 있습니다. 이를 통해 서버의 부하를 줄이고 성능을 향상시킬 수 있습니다.
- 계층화(Layered System): REST 아키텍처는 다중 계층으로 구성될 수 있습니다. 각 계층은 독립적으로 개발 및 유지보수될 수 있으며, 클라이언트는 서버와 직접 통신하지 않고 중간 계층을 통해 통신합니다.
가장 큰 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습으로 추론이 가능하다는 것입니다.
RESTful API
REST 아키텍처 스타일을 따르는 API로써 HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할 지 개발자들 사이에 널리 지켜지는 형식을 지킨 API
핵심적으로 RESTful API는 요청을 보내는 주소만으로도 대략적으로 파악이 가능해집니다.
예를들면 http:www.example.com/students
는 학생들에 대한 정보를 요청하는 것이겠다 라는 것을 대략적으로 알 수 있죠.
HTTP 메소드
HTTP 메소드에는 여러가지가 있지만 CRUD를 주로 담당하는 네 가지 메소드만 다뤄보겠습니다.
GET: 자원을 조회하는 요청
POST: 자원을 생성하는 요청
PUT: 자원을 수정하는 요청
DELETE: 자원을 삭제하는 요청
위 메소드들을 가지고 다음 포스팅부터 게시판을 구현을 할 것입니다!
Getting started
1
2
3
4
5
6
7
8
9
10
11
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
공식문서의 Getting started 코드로부터 위에서 배운 내용을 녹여내보면,
조회를 위한 GET 요청에 대한 API를 작성한 것이고, 클라이언트가 URL과 함께 GET 요청을 보내면 아래와 같이 서버로부터 ‘Hello World!’를 응답받을 수 있게 되는 것이다!
express-generator는 Express 애플리케이션을 시작하는 데 필요한 기본 구조와 설정을 제공하여 개발자가 프로젝트를 빠르게 시작하고 쉽게 구축할 수 있도록 도와줍니다.
다음 포스팅부터 본격적으로 게시판을 만들어보겠습니다.
참고
https://expressjs.com/
https://aws.amazon.com/ko/what-is/restful-api/
https://www.youtube.com/watch?v=iOueE9AXDQQ