모듈이 뭡니까?
Module은 Javascript를 파일 단위로 분리된 코드 덩어리라고 보심 됩니다.
모듈 특징
- 하나의 module에서 다른 module을 호출하여 사용가능
- module 그 자체로도 하나의 프로그램도 되고 다른 프로그램의 부품으로도 사용이 가능
- 보통 1개의 파일이 1개의 module이라고 보심됨
그래서 module이 왜 필요한데?
- 코드 베이스를 분리 가능하며 이를 통해 코드를 구조적으로 관리 가능
- 코드 재사용이 가능
- 코드의 함수와 변수중 일부만 외부에서 사용하도록 노출 가능
CJS(CommonJS)
얘가 뭔데?
- CJS는 Node.js 환경에서 기본적으로 사용되는 모듈 시스템이고
- 설정을 따로 추가하지 않는 한, Node.js에서는 CommonJS를 default 값으로 사용
- require 함수를 써서 다른 모듈 불러오기 가능하며 이 함수는 경로 혹은 문자열을 가지고 내부 알고리즘을 통해 모듈을 가져오며 종속성을 처리해요 = dependency
ESM(ECMA Script Module)
얜 또 뭔데?
- ESM은 최신 Javascript에서 지원하는 모듈 시스템이며
- 모든 Javascript 환경에서 통합적인 인터페이스를 제공하기 위해 시작된 체계이며
- CJS와는 다르게 정적 즉 static으로 모듈을 가조염 비동기적 모듈 로딩과 순환 종속을 처리한대요
API(Application Programming Interface)
API란 서로 다른 소프트웨어나 어플리케이션 간 연결해주는 매개체이자 약속이라고 아심 됩니다.
ex) 핸드폰에서 날씨앱을 이용해서 날씨 조회를 한다고 칩시다, 앱은 날씨 정보를 제공하는 서버에게 정보 달라고 요청하며 이때 앱과 날씨 서버 간의 통신을 도와주는걸 API 라고 이해하심 됩니다.
자, 여기서 API를 작성을 할껀데 무슨 의미냐면
- 웹 어플(프론트엔드)에서 원하는 기능을 수행하는 URL과 인터페이스를 제공한다고 보심 됩니다
- 작성할 API에서 원하는 데이터를 받아 데이터베이스에 데이터를 저장하고! 저장되어 있는 데이터를 읽어서 웹 어플(프론트엔드)에 데이터를 제공하고! 원하는 목적을 이룰수 있게 하고!
REST API (REST = Representational State Transfer)
- 얘는 월드 와이드 웹과 같이 분산 하이퍼미디어 시스템을 위해 네트워크 상에서 자원을 쉽고 명확하게 식별하고 조작할수 있게 도와주는 소프트웨어 아키텍쳐의 한 형식이라고 보심됩니다.
- URL, Header, Method등 네트워크 표현 수단을 개나 소나 봐도 이해하기 쉬운 표현으로 정의한다고 보심됩니다. 그래서 이 개나 소나 봐도 이해할수 있도록 자원(Resource)를 정의하고 이 자원을 중심으로 표현을 구성하는 원칙을 제시합니다.
이 친구의 구성요소는 다음과 같습니다.
- 자원
우리가 만들 소프트웨어가 관리하는 모든 것을 자원이라고 표현하며 예를들면 쇼핑몰을 가정했을때 상품은 Goods에 대해서 정보를 관리하고 장바구니 Carts에 담긴 상품들도 관리해야되겠죠?
- 행위 - HTTP method
GET, POST 등등 있는데 이것으로 해당 자원에 대한 행위를 표현하는거죠. 예를 들면 GET 메서드는 조회(Read)와 관련이 있으니 데이터를 읽는 작업을 수행하고 POST 메서드는 생성(Create)와 관련이 있으니 새로운 데이터를 생성하는 작업을 수행합니다.
보통 이것을 CRUD라고 하며
C = Create : 생성(POST)
R = Read : 조회(GET)
U = Update : 수정(PUT), (PATCH)
D = Delete : 삭제(Delete)
- 표현
해당 자원을 어떻게 표현할지에 대한 방법이죠, 보통 JSON이나 XML같은 형식을 이용해서 자원을 표현해요.
HTTP에서는 Content-Type 이라는 헤더를 통해 표현 방법을 서술하기도 합니다
REST API example
router.get('/books', (req, res) => {
res.json ({ success: true, data: getAllBooks() });
});
이처럼 /books 라는 URL을 통해 전체 책 목록을 불러와서 응답해주는 역할을 하는 API입니다.
'TIL' 카테고리의 다른 글
Database? MongoDB (0) | 2024.09.19 |
---|---|
Routing ? Router? Middleware? API Client? (0) | 2024.09.19 |
Node.js 입문할때 필요한 용어 및 정리 (Package, 웹 프레임워크(Express.js)) (0) | 2024.09.14 |
OSI - 전송 계층 (0) | 2024.09.10 |
OSI - 네트워크 계층 (5) | 2024.09.09 |