WIL
Wrap-up Retrospective: What I learned
- Express 프레임워크로 간단한 블로그 만들기
- RESTful API의 원칙을 바탕으로 CRUD 처리
- ORM 사용법 익히기: mongoose, sequelize
- Authentication: cookie, session, JWT, access/refresh token
- 미들웨어의 개념
- JS 에러 핸들링
- socket.io
The goal for the next week
- HW4까지 강의 복습
- 트랜젝션, OOP in JS, Layered Architecture
- HW5
package.json
in Node
package.json
은 노드 프로젝트의 이름, 버전, 작성자, 라이센스 및 프로젝트가 의존하는 모듈들과 그 버전 정보를 저장함. 이 파일은 프로젝트의 명령어와 스크립트를 정의할 수 있다.
// package.json
{
"name": "voyage-blog",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": { // 사용자 정의 스크립트 (명령어 설정)
"test": "echo \"Error: no test specified\" && exit 1",
"prestart": "node ./swagger.js",
"dev": "nodemon app.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Siwon-Kim/voyage-blog.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/Siwon-Kim/voyage-blog/issues"
},
"homepage": "https://github.com/Siwon-Kim/voyage-blog#readme",
"dependencies": { // npm 모듈 리스트 ()
"bcrypt": "^5.1.0",
"cookie-parser": "^1.4.6",
"express": "^4.18.2",
"jsonwebtoken": "^9.0.0",
},
"devDependencies": { // 개발에만 필요한 모듈
"nodemon": "^2.0.22",
}
}
package-lock.json
은 npm이 의존하는 패키지들의 정확한 의존성 정보와 버전 정보를 포함한다. 이 파일은 npm이 패키지를 설치하거나 업데이트할 때 사용되며, 패키지의 버전 충돌이나 의존성 오류를 방지하는 데 중요한 역할을 한다.
// package-lock.json
"node_modules/express": {
"version": "4.18.2", // 정확한 버전 정보
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
"integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.1",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.5.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "1.2.0",
"fresh": "0.5.2",
"http-errors": "2.0.0",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7",
"qs": "6.11.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
"send": "0.18.0",
"serve-static": "1.15.0",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"engines": {
"node": ">= 0.10.0"
}
},
RESTful API
- REST 아키텍쳐를 따르는 API이다.
- HTTP 프로토콜을 기반으로 한다.
- Resource를 주소 (URI)로 식별한다.
- HTTP 요청 메서드 (GET, POST, PUT, PATCH, DELETE)를 사용한다.
- 자원에 대한 CRUD 작업을 수행한다.
- 클라이언트-서버 모델과 무상태 (stateless)의 특징을 가진다. 즉, 클라이언트와 서버가 독립적으로 개발되어야 하며, 각 요청에 대한 처리가 서버에 의해 완전히 수행되고, 클라이언트의 상태는 서버에 저장되지 않는다.
- 장점: 네트워크 통신의 표준화와 확장성, 유지보수성 등의 이점을 제공한다.