[WIL] package.json, RESTful API

김시원·2023년 4월 23일
0

WIL

목록 보기
3/9

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)의 특징을 가진다. 즉, 클라이언트와 서버가 독립적으로 개발되어야 하며, 각 요청에 대한 처리가 서버에 의해 완전히 수행되고, 클라이언트의 상태는 서버에 저장되지 않는다.
  • 장점: 네트워크 통신의 표준화와 확장성, 유지보수성 등의 이점을 제공한다.

0개의 댓글