Restful API
- RESTful의 정의: REST API를 제공하는 웹을 RESTful 하다 라고 지징함.
- 이해하기 쉽고 사용하기 쉬운 REST API를 구축하는 것이 목적.
구성요소
자원(resource) : URI
- 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
- 자원을 구별하는 ID 예시) "/posts/:postId" 같은 HTTP URI
- 자원의 종류에는 데이터, 문서 ,이미지 ,동영상 등 웹에서 사용할 수 있는 모든종류의 데이터를 자원으로 표기할 수 있다.
행위(Verb)
- HTTP 프로토콜의 Method 사용
- GET, POST , PUT PATCH ,DELETE 등의 CRUD 메서드
- 예시) app.get("/posts/postId")
표현(Representaiton of Resource)
- 클라이언트(브라우저)가 자원의 상태에 대한 조작을 요청하면 서버는 적절한 응답을 보낸다
- JSON이나 XML등의 데이터 형식을통해 데이터를 주고받음.
package.json
NPM(Node Package Manager)
- npm은 node.js를 위한 패키지 매니져이다. 노드 패키지를 관리하기위해 개발됨
package.json
- 개발자가 배포한 패키지에 대해, 다른 사람들이 관리하고 설치하기 쉽게 하기 위한 문서이다.
- 자신의 프로젝트가 의존하는 패키지의 리스트
- 자신의 프로젝트의 버전을 명시
- 다른 환경에서도 빌드를 재생 가능하게 만들어, 다른 개발자가 쉽게 사용할 수 있도록 한다.
package.json예시
- 프로젝트에 관련된 정보가 담겨 있다. 어떤 라이브러리를 사용하고있는지 ,어떤 버젼을 사용하고 있는지 간단한 정보들을 확인할 수있다.
{
"name": "personal-work",
"version": "1.0.0",
"description": "노드과제 시작",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ystar5008/node-personal-work.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/ystar5008/node-personal-work/issues"
},
"homepage": "https://github.com/ystar5008/node-personal-work#readme",
"dependencies": {
"cookie-parser": "^1.4.6",
"express": "^4.18.2",
"jsonwebtoken": "^9.0.0",
"mongoose": "^7.0.3"
},
"devDependencies": {
"jest": "^29.5.0",
"supertest": "^6.3.3"
},
"type": "commonjs"
}