일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- typescript
- OSI7계층
- django westagram
- bcrypt
- wecode
- nodeJS
- CORS
- 실행 컨텍스트
- manytomanyfield
- westagram
- 스코프
- JWT
- pm2
- on_delete
- 자바스크립트
- crud2
- 프로미스
- node
- TypeError: this.boardRepository.createBoard is not a function
- Jest
- async/await
- 장고초기세팅
- 노드
- docker
- javascript
- status code
- 호이스팅
- rebase
- Django
- 트랜잭션
- Today
- Total
될때까지
((기업협업2)) node야 친하게 지내자... 기본 개념정리 본문
port
포트는 서버 내에서 프로세스를 구분하는 번호.
다른 포트로 데이터베이스나 다른 서버 동시에 연결이 가능하다.
localhost
localhost는 컴퓨터 내부 주소로 외부에서는 접근이 불가능하다.
HTTP 요청 메소드
- GET : 서버 자원을 가져오려고 할 때 사용
- POST : 서버에 자원을 새로 등록하고자 할 때 사용
- PUT : 서버의 자원을 요청에 들어있는 자원으로 치환하고자 할 때 사용
- PATCH : 서버 자원의 일부만 수정하고자 할 때 사용
- DELETE : 서버의 자원을 삭제하고자 할 때 사용
package.json
현재 프로젝트에 대한 정보와 사용중인 패키지에 대한 정보를 담은 파일이다.
같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해둬야한다.
동일한 버전을 설치하지 않으면 문제가 생길 수 있다.
노드 프로젝트 시작 전에 npm init이라는 명령어로 package.json부터 만들고 시작해야한다.
npm init or npm init -y하면 아래처럼 package.json 파일이 생성된다.
{
"name": "node-test2",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"cookie-parser": "~1.4.4",
"debug": "~2.6.9",
"express": "~4.16.1",
"http-errors": "~1.6.3",
"jade": "~1.11.0",
"morgan": "~1.9.1"
}
}
scripts는 터미널에 쳐야하는 명령어를 간략하게 해주는 역할이랄까?
start는 npm run start로 실행할 수 있다. (npm start로도 가능) 그럼 옆의 코드가 실행됨.
npm i express
express를 설치하면 dependencies에 기록된다.
npm i -D nodemon
-D를 사용하면 devDependencies에 추가가 되는데, 개발할때만 쓰이는 패키지들을 저장한다.
(nodemon은 개발을 편리하게 도와주는 패키지임)
node_modules는 배포할 때 지워서 배포한다. (무거움)
npm i를 하면 다시 설치가 되기 때문이다.
npm i -g의 g는 global은 전역설치를 말하는데, dependencies에 기록이 안된다.
터미널에서 명령어처럼 사용하고 싶을 때 전역설치를 주로 한다.
글로설 설치하면 dependencies에 기록이 안되니까 다른 관리자가 무엇을 설치해야하는지 알 수가 없다.
따라서 요새는 npm i 설치할패키지 -D로 개발전용 패키지에 기록을 해주고
터미널에서 명령어를 사용하고 싶다면 npx를 앞에 붙여서 사용해주면 된다.
npm i rimraf -D
npx rimraf node_modules
npx는 node package execute의 약자로 노드 패키지 실행을 담당한다.
package-lock.json
정확한 버전들을 기록해두기 때문에 버전문제를 사전에 방지한다.
버전들은 세자리 수. 0.0.0 => 노드 패키지의 버전은 SemVer(유의적 버저닝) 방식을 따른다.
Major.Minor.Patch -> 주 버전.부 버전.수 버전
노드에서는 배포를 할 때 항상 버전을 올려야한다.
- Major는 하위버전과 호환되지 않는 수정사항이 생겼을 때 올린다.
- Minor는 하위 버전과 호환되는 수정사항이 생겼을 때 올린다.
- Patch는 기능에 버그를 해결했을 때 올린다.
- ^1.1.1 : 패키지 업데이트 시 minor 버전까지만 업데이트 됨(2.0.0버전은 안된다)
- ~1.1.1 : 패키지 업데이트 시 patch 버전까지만 업데이트 됨(1.2.0버전은 안됨)
미들웨어
미들웨어는 next()를 호출해야 다음 미들웨어로 넘어간다.
next에 인수로 값을 넣으면 에러 핸들러로 넘어간다.
morgan
요청과 응답에 대한 정보를 콘솔에 보여주는 패키지
개발시에는 app.use(morgan('dev')); 배포시에는 app.use(morgan('combined')); => combined가 더 자세하게 나타내줌
body-parser
body의 데이터 값을 읽을 수 있게끔 도와주는 미들웨어
express 4.16버전 이후부터는 express내부에 body-parser가 포함되어있어서 따로 설치할 필요가 없다.
const express = require('express');
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
- express.json() : 클라이언트에서 JSON형식의 데이터를 보내면 그 데이터를 파싱해서 request의 body에 저장된다.
- express.urlencoded : 클라이언트에서 폼을 보낼 때 폼을 파싱해서 body에 저장한다. (url-encoded 형식) 'color=red&size=s'로 값이 전달되면 {'color':'red', 'size':'s'}형태로 변형되서 저장된다.
- 클라이언트에서 이미지나 파일 보내는 경우는 urlencoded로 처리가 안됨 주의!! 월터?사용한다고 함
- extended:true는 true사용시 qs를 사용하고(좀 더 확장된 아이) false면 querystring을 사용하니까 true로 하는거 권장
와일드카드
/:name처럼 범위가 넓은 라우터는 하단에 작성해야한다.
err
에러는 4가지 매개변수가 필수임 (err, req, res, next)
try/catch로 error를 핸들링하면 next(error)적어준다.
빈 next()는 다음 미들웨어로 넘어감.
next()안에 error를 적어주면 바로 error처리 미들웨어로 코드가 넘어감.
res
res.json() 응답 보내기
res.json()은 리턴이 아니기 때문에 뒤에 console로그쓰면 찍힌다.
'프로젝트 > wecode : 기업협업' 카테고리의 다른 글
((기업협업3)) node.js + mysql + CRUD 특정 유저 수정 (0) | 2022.08.18 |
---|---|
((기업협업3)) node.js + mysql + CRUD 특정 유저 조회 (0) | 2022.08.18 |
((기업협업3)) node.js + mysql + CRUD 전체 유저 조회 (0) | 2022.08.18 |
((기업협업2)) node.js 초기 세팅 + mysql연동 + CRUD 중 Create만 (0) | 2022.08.18 |
((기업협업1)) 혼돈의 기업 협업 첫!출!근! nodejs? express? (0) | 2022.08.17 |