목록

'node js' 122건

  • cookie-parser
    프로그래밍 언어/NODE JS · 댓글
    cookie-parser는 요청에 동봉된 쿠키를 해석해 req.cookies 객체로 만듭니다. cookie-parser 미들웨어는 다음과 같이 사용합니다.app.use(cookieParser(비밀키)); 해석된 쿠키들들은 req.cookies 객체에 들어갑니다. 예를 들어 name=zecrocho 쿠키를 보냈다면 req.cookies는 { name: 'zerocho' }가 됩니다. 유효 기간이 지난 쿠키는 알아서 걸러냅니다.첫 번째 인수로 비밀 키를 넣어 줄 수 있습니다. 서명된 쿠키가 있는 경우, 제공한 비밀 키를 통해 해당 쿠키가 내 서버가 만든 쿠키임을 검증할 수 있습니다. 쿠키는 클라이언트에서 위조하기 쉬우므로 비밀 키를 통해 만들어낸 서명을 쿠키 값 뒤에 붙입니다. 서명이 붙으면 쿠키가 name..
  • body-parser
    프로그래밍 언어/NODE JS · 댓글
    요청의 본문에 있는 데이터를 해석해서 req.body 객채로 만들어주는 미들웨어입니다. 보통 폼 데이터나 AJAX 요청의 데이터를 처리합니다. 단, 멀티파트(이미지, 동영상, 파일) 데이터는 처리하지 못합니다. 이 경우에는 뒤에 나오는 multer 모듈을 사용하면 됩니다.body-parser 미들웨어는 다음과 같이 사용합니다.app.use(express.login());app.use(express.urlencoder({ extended: false })); body-parser를 직접 설치해야 하는 경우도 있습니다. body-parser는 JSON과 URL-encoded 형식의 데이터 외에도 Raw, Text 형식의 데이터를 추가로 해셕할 수 있습니다.Raw는 요청의 본문이 버퍼 데이터일 때 해석하는 미..
  • static
    프로그래밍 언어/NODE JS · 댓글
    static 미들웨어는 정적인 파일들을 제공하는 라우터 역할을 합니다. 기본적으로 제공되기에 따로 설치할 필요 없이 express 객체 안에서 꺼내 정착하면 됩니다. 다음과 같이 사용합니다.app.use('요청 경로', express.static('실제 경로'));app.use("/", express.static(path.join(__dirname, "public"))); 함수의 인수로 정적 파일들이 담겨 있는 폴더를 지정하면 됩니다. 현재 public 폴더가 지정되어 있습니다. 예를 들어 public/stylesheets/style.css는 http://localhost:3000/stylesheets/style.css로 접근할 수 있습니다. public 폴더를 만들고 css나 js, 이미지 파일들을 p..
  • 자주 사용하는 미들웨어
    프로그래밍 언어/NODE JS · 댓글
    미들웨어는 익스프레스의 핵심입니다. 요청과 응답의 중간(middle)에 위치하여 미들웨어라고 부릅니다. 라우터와 에러 핸들러 또한 미들웨어의 일종으므로 미들웨어가 익스프레스의 전부라고 해도 과언이 아닙니다. 미들웨어 요청과 응담을 조작하여 기능을 추가하기도 하고, 나쁜 요청을 걸러내기도 합니다.미들웨어는 app.use와 함께 사용됩니다. app.use(미들웨어) 꼴입니다. 익스프레스 서버에 미들웨어를 연결해봅시다.app.jsconst express = require("express");const path = require("path");const app = express();app.set("port", process.env.PORT || 3000);app.use((req, res, next) => { ..
  • 익스프레스 프로젝트 시작하기
    프로그래밍 언어/NODE JS · 댓글
    먼저 learn-express 폴더를 만듭니다. 항상 package.json을 제일 먼저 생성해야 합니다. package.json을 제일 먼저 생성해야 합니다. package.json을 생성해주는 npm init 명령어를 콘솔에서 호출해도 되고 직접 파일을 만들어도 됩니다. version이나 description, author, license는 원하는 대로 자유롭게 수정해도 괜찮습니다.package.json{ "name": "learn-express", "version": "1.0.0", "description": "익스프레스를 배우자", "main": "app.js", "scripts": { "start": "nodemon app" }, "author": "cherry", "lice..
  • 패키지 배포하기
    프로그래밍 언어/NODE JS · 댓글
    1. npm 웹 사이트(https://www.npmjs.com) 우측 상단의 Sign Up을 눌러 회원가입을 합니다.2. 회원가입 confirm 메일을 확인합니다.3. 콘솔에서 npm addUser 명령어를 입력하여 생성한 계정으로 로그인합니다. 이에 패키지로 만들 코드를 작성합니다. package.json의 main 부분의 파일명과 일치해야 합니다. 그래야 npm에서 이 파일이 패키지와 진입점임을 알 수 있습니다.index.jsmodule.exports = () => { return "hello package";}; 이제 npm publish 명령어를 사용하여 이 패키지를 배포해봅시다. 하지만 에러가 발생할 것입니다.콘솔$ npm publishnpm noticenpm notice 📦 npmtest..
  • 기타 npm 명령어
    프로그래밍 언어/NODE JS · 댓글 2
    npm으로 설치한 패키지를 사용하다 보면 새로운 기능이 추가되거나 버그를 고친 새로운 버전이 나올 때가 있습니다. npm outdated 명령어로 업데이트할 수 있는 패키지가 있는지 확인해보면 됩니다. Current와 Wanted가 다르다면 업데이트가 필요한 경우입니다. 이럴 때는 npm updated [패키지명]으로 업데이트할 수 있습니다. npm update를 하면 업데이트 가능한 모든 패키지가 Wanted에 적힌 버전으로 업데이트하면 됩니다. Latest는 해당 패키지의 최신 버전이지만 package.json에 적힌 버전 범위와 다르다면 설치되지 않습니다.npm uninstall [패키지명]은 해당 패키지를 제거하는 명령어입니다. 패키지가 node_modules 폴더와 package.json에서 사..
  • 패키지 버전 이해하기
    프로그래밍 언어/NODE JS · 댓글
    노드 패키지들의 버전은 항상 세 가지로 이루어져 있습니다. 심지어 노드의 버전도 세 자리입니다. 버전이 세 자리인 이유는 SemVer 방식의 버전 넘버링이 따르기 때문입니다.SemVer는 Semantic Versioning(유의적 버전)의 약어입니다. 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는 뜻입니다.각각의 패키지는 모두 버전이 다르고 페키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지의 버전을 업그레이드했는데, 그것을 사용하는 다른 패키지에서 에러가 발생한다면 문제가 됩니다. 많은 패키지가 서로 얽히다 보면 이 문제는 점점 더 심각해집니다. 따라서 버전 번호를 어떻게 정하고 올려야 하는지를 명시하는 규칙이 등장했습니다.버전의 첫 번째 자리..
  • npm 알아보기 & package.json으로 패키지 관리하기
    프로그래밍 언어/NODE JS · 댓글 1
    npm 알아보기npm은 Node Package Manager의 약어로, 이를 그대로 노드 패키지 매니저입니다. 대부분의 자바스크립트 프로그램은 패키지라는 이름으로 npm에 등록되어 있으므로 특정 기능을 하는 패키지가 필요하다면 npm에 찾아 설치하면 됩니다.방대한 양의 패키지는 노드와 자바스크립트의 생태계를 더욱 견고하게 만들고 있습니다. 게다가 대부분 오픈 소스여서 노드를 사용해 웹을 개발할 때 많은 도움이 됩니다.npm에 업로드된 노드 모듈을 패키지라고 부릅니다. 모듈이 다른 모듈을 사용할 수 있는 것처럼, 패키지가 다른 패키지를 사용할 수도 있습니다. package.json으로 패키지 관리하기설치한 패키지의 버전을 관리하는 파일이 바로 package.json입니다. 따라서 노드 프로젝트를 시작하기 ..
  • https와 http2
    프로그래밍 언어/NODE JS · 댓글
    https 모듈은 웹 서버에 SSL 암호화를 추가합니다. GET이나 POST 요청을 할 때 오가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 합니다. 요즘은 로그인이나 결제가 필요한 창에서 https 적용이 필수가 되는 추세입니다.SSL이 적용된 웹 사이트에서 방문하면 브라우저 창에 자물쇠 표시가 나옵니다.server1.jsconst http = require("http");http .createServer((req, res) => { res.writeHead(500, { "Content-Type": "text/html; charset=utf-8" }); res.write("Hello Node!"); res.end("Hello Server!"); ..
  • 쿠키와 세션 이해하기
    프로그래밍 언어/NODE JS · 댓글 1
    서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터는 클라이언트로부터 쿠키를 받아 요청자를 파악합니다. 쿠키가 여러분이 누구인지 추적하고 있는 것입니다. 개인정보 유충 방지를 위해 쿠기를 주기적으로 지우라고 권고하는 것은 바로 이러한 아유 때문입니다.쿠키는 요청의 헤더(Cookie)에 담겨 전송됩니다. 브라우저는 응답의 헤더(Set-Cookie)에 따라 쿠키를 저장합니다.cookie.jsconst http = require("http");http .createServer((req, res) => { console.log(req.url, req.headers.cookie); res.writeHead(200, { "Set-Cookie": "mycookie=t..
  • REST와 라우팅 사용하기
    프로그래밍 언어/NODE JS · 댓글
    REST에서는 주소 외에도 HTTP 요청 메서드라는 것을 사용합니다. 폼 데이터를 전송할 때 GET 또는 POST가 바로 요청 메서드입니다. 또한, PUT, PATCH, DELETE, OPTIONS 등의 메소드도 자주 사용됩니다.GET : 서버 자원을 가져오고자 할 때 사용합니다. 요청의 본문에 데이터를 넣지 않습니다. 데이터를 서버로 보내야 한다면 쿼리스트링을 사용합니다.POST : 서버에 자원을 가져오고자 할 때 사용합니다. 요청의 본문에 새로 등록할 데이터를 넣어 보냅니다.PUT : 서버의 자원을 요청에 들어 있는 자원으로 치환하고자 할 때 사용합니다. 요청의 본문에 치환할 데이터를 넣어 보냅니다.PATCH : 서버 자원의 일부만 수정하고자 할 때 사용합니다. 요청은 본문에 일부 수정할 데이터를 넣..

cookie-parser

cookie-parser는 요청에 동봉된 쿠키를 해석해 req.cookies 객체로 만듭니다. cookie-parser 미들웨어는 다음과 같이 사용합니다.app.use(cookieParser(비밀키)); 해석된 쿠키들들은 req.cookies 객체에 들어갑니다. 예를 들어 name=zecrocho 쿠키를 보냈다면 req.cookies는 { name: 'zerocho' }가 됩니다. 유효 기간이 지난 쿠키는 알아서 걸러냅니다.첫 번째 인수로 비밀 키를 넣어 줄 수 있습니다. 서명된 쿠키가 있는 경우, 제공한 비밀 키를 통해 해당 쿠키가 내 서버가 만든 쿠키임을 검증할 수 있습니다. 쿠키는 클라이언트에서 위조하기 쉬우므로 비밀 키를 통해 만들어낸 서명을 쿠키 값 뒤에 붙입니다. 서명이 붙으면 쿠키가 name..

body-parser

요청의 본문에 있는 데이터를 해석해서 req.body 객채로 만들어주는 미들웨어입니다. 보통 폼 데이터나 AJAX 요청의 데이터를 처리합니다. 단, 멀티파트(이미지, 동영상, 파일) 데이터는 처리하지 못합니다. 이 경우에는 뒤에 나오는 multer 모듈을 사용하면 됩니다.body-parser 미들웨어는 다음과 같이 사용합니다.app.use(express.login());app.use(express.urlencoder({ extended: false })); body-parser를 직접 설치해야 하는 경우도 있습니다. body-parser는 JSON과 URL-encoded 형식의 데이터 외에도 Raw, Text 형식의 데이터를 추가로 해셕할 수 있습니다.Raw는 요청의 본문이 버퍼 데이터일 때 해석하는 미..

static

static 미들웨어는 정적인 파일들을 제공하는 라우터 역할을 합니다. 기본적으로 제공되기에 따로 설치할 필요 없이 express 객체 안에서 꺼내 정착하면 됩니다. 다음과 같이 사용합니다.app.use('요청 경로', express.static('실제 경로'));app.use("/", express.static(path.join(__dirname, "public"))); 함수의 인수로 정적 파일들이 담겨 있는 폴더를 지정하면 됩니다. 현재 public 폴더가 지정되어 있습니다. 예를 들어 public/stylesheets/style.css는 http://localhost:3000/stylesheets/style.css로 접근할 수 있습니다. public 폴더를 만들고 css나 js, 이미지 파일들을 p..

자주 사용하는 미들웨어

미들웨어는 익스프레스의 핵심입니다. 요청과 응답의 중간(middle)에 위치하여 미들웨어라고 부릅니다. 라우터와 에러 핸들러 또한 미들웨어의 일종으므로 미들웨어가 익스프레스의 전부라고 해도 과언이 아닙니다. 미들웨어 요청과 응담을 조작하여 기능을 추가하기도 하고, 나쁜 요청을 걸러내기도 합니다.미들웨어는 app.use와 함께 사용됩니다. app.use(미들웨어) 꼴입니다. 익스프레스 서버에 미들웨어를 연결해봅시다.app.jsconst express = require("express");const path = require("path");const app = express();app.set("port", process.env.PORT || 3000);app.use((req, res, next) => { ..

익스프레스 프로젝트 시작하기

먼저 learn-express 폴더를 만듭니다. 항상 package.json을 제일 먼저 생성해야 합니다. package.json을 제일 먼저 생성해야 합니다. package.json을 생성해주는 npm init 명령어를 콘솔에서 호출해도 되고 직접 파일을 만들어도 됩니다. version이나 description, author, license는 원하는 대로 자유롭게 수정해도 괜찮습니다.package.json{ "name": "learn-express", "version": "1.0.0", "description": "익스프레스를 배우자", "main": "app.js", "scripts": { "start": "nodemon app" }, "author": "cherry", "lice..

패키지 배포하기

1. npm 웹 사이트(https://www.npmjs.com) 우측 상단의 Sign Up을 눌러 회원가입을 합니다.2. 회원가입 confirm 메일을 확인합니다.3. 콘솔에서 npm addUser 명령어를 입력하여 생성한 계정으로 로그인합니다. 이에 패키지로 만들 코드를 작성합니다. package.json의 main 부분의 파일명과 일치해야 합니다. 그래야 npm에서 이 파일이 패키지와 진입점임을 알 수 있습니다.index.jsmodule.exports = () => { return "hello package";}; 이제 npm publish 명령어를 사용하여 이 패키지를 배포해봅시다. 하지만 에러가 발생할 것입니다.콘솔$ npm publishnpm noticenpm notice 📦 npmtest..

기타 npm 명령어

npm으로 설치한 패키지를 사용하다 보면 새로운 기능이 추가되거나 버그를 고친 새로운 버전이 나올 때가 있습니다. npm outdated 명령어로 업데이트할 수 있는 패키지가 있는지 확인해보면 됩니다. Current와 Wanted가 다르다면 업데이트가 필요한 경우입니다. 이럴 때는 npm updated [패키지명]으로 업데이트할 수 있습니다. npm update를 하면 업데이트 가능한 모든 패키지가 Wanted에 적힌 버전으로 업데이트하면 됩니다. Latest는 해당 패키지의 최신 버전이지만 package.json에 적힌 버전 범위와 다르다면 설치되지 않습니다.npm uninstall [패키지명]은 해당 패키지를 제거하는 명령어입니다. 패키지가 node_modules 폴더와 package.json에서 사..

패키지 버전 이해하기

노드 패키지들의 버전은 항상 세 가지로 이루어져 있습니다. 심지어 노드의 버전도 세 자리입니다. 버전이 세 자리인 이유는 SemVer 방식의 버전 넘버링이 따르기 때문입니다.SemVer는 Semantic Versioning(유의적 버전)의 약어입니다. 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는 뜻입니다.각각의 패키지는 모두 버전이 다르고 페키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지 간의 의존 관계도 복잡합니다. 만약 어떤 패키지의 버전을 업그레이드했는데, 그것을 사용하는 다른 패키지에서 에러가 발생한다면 문제가 됩니다. 많은 패키지가 서로 얽히다 보면 이 문제는 점점 더 심각해집니다. 따라서 버전 번호를 어떻게 정하고 올려야 하는지를 명시하는 규칙이 등장했습니다.버전의 첫 번째 자리..

npm 알아보기 & package.json으로 패키지 관리하기

npm 알아보기npm은 Node Package Manager의 약어로, 이를 그대로 노드 패키지 매니저입니다. 대부분의 자바스크립트 프로그램은 패키지라는 이름으로 npm에 등록되어 있으므로 특정 기능을 하는 패키지가 필요하다면 npm에 찾아 설치하면 됩니다.방대한 양의 패키지는 노드와 자바스크립트의 생태계를 더욱 견고하게 만들고 있습니다. 게다가 대부분 오픈 소스여서 노드를 사용해 웹을 개발할 때 많은 도움이 됩니다.npm에 업로드된 노드 모듈을 패키지라고 부릅니다. 모듈이 다른 모듈을 사용할 수 있는 것처럼, 패키지가 다른 패키지를 사용할 수도 있습니다. package.json으로 패키지 관리하기설치한 패키지의 버전을 관리하는 파일이 바로 package.json입니다. 따라서 노드 프로젝트를 시작하기 ..

https와 http2

https 모듈은 웹 서버에 SSL 암호화를 추가합니다. GET이나 POST 요청을 할 때 오가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 합니다. 요즘은 로그인이나 결제가 필요한 창에서 https 적용이 필수가 되는 추세입니다.SSL이 적용된 웹 사이트에서 방문하면 브라우저 창에 자물쇠 표시가 나옵니다.server1.jsconst http = require("http");http .createServer((req, res) => { res.writeHead(500, { "Content-Type": "text/html; charset=utf-8" }); res.write("Hello Node!"); res.end("Hello Server!"); ..

쿠키와 세션 이해하기

서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터는 클라이언트로부터 쿠키를 받아 요청자를 파악합니다. 쿠키가 여러분이 누구인지 추적하고 있는 것입니다. 개인정보 유충 방지를 위해 쿠기를 주기적으로 지우라고 권고하는 것은 바로 이러한 아유 때문입니다.쿠키는 요청의 헤더(Cookie)에 담겨 전송됩니다. 브라우저는 응답의 헤더(Set-Cookie)에 따라 쿠키를 저장합니다.cookie.jsconst http = require("http");http .createServer((req, res) => { console.log(req.url, req.headers.cookie); res.writeHead(200, { "Set-Cookie": "mycookie=t..

REST와 라우팅 사용하기

REST에서는 주소 외에도 HTTP 요청 메서드라는 것을 사용합니다. 폼 데이터를 전송할 때 GET 또는 POST가 바로 요청 메서드입니다. 또한, PUT, PATCH, DELETE, OPTIONS 등의 메소드도 자주 사용됩니다.GET : 서버 자원을 가져오고자 할 때 사용합니다. 요청의 본문에 데이터를 넣지 않습니다. 데이터를 서버로 보내야 한다면 쿼리스트링을 사용합니다.POST : 서버에 자원을 가져오고자 할 때 사용합니다. 요청의 본문에 새로 등록할 데이터를 넣어 보냅니다.PUT : 서버의 자원을 요청에 들어 있는 자원으로 치환하고자 할 때 사용합니다. 요청의 본문에 치환할 데이터를 넣어 보냅니다.PATCH : 서버 자원의 일부만 수정하고자 할 때 사용합니다. 요청은 본문에 일부 수정할 데이터를 넣..