1. MongoDB 

모듈 설치

: mongoDB용 모듈

: mongodb : MongoDB Nodejs Driver

: Mongoose : ODM

2. MongoDB Driver

MongoDB js

: 드라이버

: mongo 콘솔 클라이언트 명령과 동일하게 조작

: 설치

: npm install mongodb

: 콜랙션 얻기, 따로 변수로 저장해두면 편함


'프로그래밍 > Nodejs' 카테고리의 다른 글

socket.io 를 이용한 실시간 웹서비스  (0) 2017.04.27
소켓을 이용한 실시간 서비스  (0) 2017.04.27
Node.js와 MySQL  (0) 2017.04.27
Express  (0) 2017.04.24
RESTful  (0) 2017.04.24

1. MySQL

MySQL사용하기

: 모듈

: node-mysql

커넥션

> mysql.createConnection(DATABASE-CONFIG);

: 커넥션 설정

: host, post, user, password, database(DB명)

: multipleStatements : 동시 여러 SQL실행, 보안주의

: connectTimeout : 타임아웃 시간, 기본 10초

커넥션 생성

: config 부분에
> var config = { host : 127.0.0.1, ...} 와 같이 넣음

: connect : 연결

: end : 연결 종료

: query : SQL문 실행 및 자동 연결

커넥션 풀

: 다수의 커넥션 관리 기법

: 풀에서  커넥션을 얻어서 사용하고 반납

: 커넥션을 모듈로 분리해서 사용하는게 좋다.

: 하나의 커넥션으로 공유해서 사용할 수 있음

SQL 실행

:  placeholder

1. 

> var sql = 'INSERT INTO movie(title) VALUES (?);;' 
> connection.query(sql, ['인터스텔라'],function(){});

2. INSERT일 경우

> var data = {title : '메멘토'} 
> > connection.query(sql, data,function(){});

실행결과

: affectedRow : 영향을 받은 열의 개수

: insertID : 새로 추가한 경우 Primary Key

: changeRow : 변경된 열의 수

SQL Injection

: 플레이스 홀더 사용하기

실행과 커넥션 닫기

: query는 비동기 동작

: 커넥션 닫기는 query 콜백 함수 내에 작성하기

트랜잭션

: 여러 쿼리를 사용할 때 다시 되돌릴 수 있도록 commit으로 흐름제어

> conn.beginTransaction(CB);

: CB : err를 파라미터로 하는 콜백 함수

: conn.commit() : 트랜잭션 내 변경 확정

: conn.rollback() : 트랜잭션 내 변경 되돌리기

2. Sequelize

sequelize

: ORM : 객체와 모델을 매핑

: 지원 데이터 베이스 - MySQL, MariaDB, SQLite, 

: ORM

: SQL직접다루기 - SQL 작성 실행

: ORM : 모델을 이용한 값 저장과 변경

사용하기

: DB연결 설정
: 모델 설정
: 모델을 이용해서 데이터 저장
: 모델에서 데이터 얻어오기
: 모델을 이용해서 데이터 수정/삭제


: 별로인것 같다 안써도 될것같다.



'프로그래밍 > Nodejs' 카테고리의 다른 글

소켓을 이용한 실시간 서비스  (0) 2017.04.27
Nodejs와 MongoDB  (0) 2017.04.27
Express  (0) 2017.04.24
RESTful  (0) 2017.04.24
모바일서버  (0) 2017.04.24

1. Express 소개

: 경량 HTTP 웹 프레임 워크

: 요청과 응답

: 미들웨어 사용

: 템플릿 엔진

: 설치

: npm install express

미들웨어

: 요청 분석, 처리하는 모듈

: 여러개의 미들웨어로 구성

: 미들웨어 사용설정

: app.use(미들웨어) 

: app = express()

: app.use(function(){})

라우팅

: 요청 -> 요청 처리 미들웨어로 분배

: HTTPMethod 별로 라우팅

: URL 경로 별로 라우팅

: method 별로, 경로 별로 가능

Express 요청

: 요청분석

: req.query - 쿼리 문자열

: req.path - 요청 URL 중 경로

: req.params - URL의 파라미터

: req.cookie : 요청 메세지 내 쿠키(쿠키파서 필요)

: req.body : 요청 메시지 바디 분석 (바디 파서 필요)

Express 응답

다양한 응답 메소드

: res.json() - JSON 응답 메시지 전송

: res.redirect() - 리다이렉션 응답 전송

: res.render() - 템플릿으로 렌더링

: res.send() - JSON, HTML, Buffer 전송, 메시지 헤더에 Content-Type 자동설정

: res.sendStatus() : 상태 코드와 상태 메시지 전송

: res.status() : 상태 코드 설정. 응답 메소드 종료 안함

: res.download() : 파일 다운로드

2. Express 미들웨어

미들웨어

: 미들웨어 기반의 프레임 워크

: connect

: Express

: 미들웨어

: 작은 단위 모듈

: 요청과 응답 처리 함수 형태

: Express 앱

: 다수의 미들웨어 조합으로 동작

: Express 앱의 요청 다루기

: 하나의 미들웨어에서 요청 분석 응답 마무리

: HTTP 메소드 별 미들웨어 설정 가능

: 여러 미들웨어를 거쳐서 요청과 응답 마무리

> app.use(function(req,res,next){
>     console.log("");
> next();                    // 바로 밑에 있는 미들웨어 실행
> });

> app.use(logger, sayHello) 와 같이 두 함수를 같이 넣어도 됨.

: express의 미들웨어

: 애플리케이션 수준의 미들웨어

: 라우터 수준의 미들웨어

: 에러처리

: 빌트인

: 써드파티

: 미들웨어 동작 순서 중요

: 보통 미들웨어 동작 순서

: 파비콘 처리 미들웨어

: 로깅 - 로그 남기는 거

: 정적파일

: 서비스 미들웨어

: 에러처리

: 내장 미들웨어, 써드 파티 미들웨어

: 내장 미들웨어

: express.static

: 써드 파티 미들웨어 : 설치해야 사용 가능

: var cookieParser = require('cookie-parser');

: app.use(cookeParser());

3. 정적 파일 요청 처리 미들웨어

정적파일

: 정적 파일 처리 미들웨어

: express.static

: 미들웨어 생성

: express.static(root, [options])

: 옵션

: etag : etag 사용 여부, 기본 true

: 사용

: app.use(express.static('images'))  //  images 폴더에서 찾아라

: 여러개 사용 가능

: 첫번째 미들웨어에서 서비스 실패하면, 그 다음 미들웨어에서 찾음

: 가상 경로 설정

: app.use('/static',express.static('files'));    //    static/image.png를 files/image.png로 찾음

Express 라우팅

1. Expresss 라우팅

라우팅

: 클라이언트의 요청을 미들웨어로 분배

: 라우팅 종류

: 요청경로

: 요청 메소드

: 요청 경로 + 요청 메소드

메소드별 라우팅 함수

: app.all, get, post, put, delete(요청경로, 담당 미들웨어)

동적 파라미터

: app.get('/user/:item',[callback]);

: req.params.item 처럼 호출

: 다수의 파라미터 사용 가능

: /movies/:movieId/:actor

: 사용 주의

: /user/:item

: /user/sample

: 라우팅 경로가 겹친다

: 앞 순위 미들웨어가 담당

: 순위 조절 필요

라우팅

: 경로에 정규식 사용하기

: ? 문자 존재하거나 생략

: /ab?cd ==> /abcd, /acd

: + 1번이상 반복

: /ab+cd ==> /abcd, /abbcd, /abbbcd

: * 임의의 문자

: /ab*cd ==> /abcd, abxcd, abRABDOMcd, ...

: 괄호를 통해 묶어주면 정규식을 묶어서 사용 가능

: express의 route 함수

: 같은 경로에 대해 다양한 메소드를 정의할 수 있음

: route().get().post()..

라우터 수준의 미들웨어

라우터

> var router = express.Router();

: 라우팅 로직을 별도로 분리할 떄 사용

: router.js

> router.get(경로,미들웨어);

> router.get(경로,미들웨어);

> module.exports = router;

: 라우팅 로직 설정 

: app.js

: app.use(require('./router'))

상대 경로 처리 라우터 설정

상대 경로 요청 처리 가능

* /greeting/hello 경로의 요청

: app.use('/greeting',require('./greetingRouter'))

* greetingRouter의 라우팅 코드

: router.get('/hello', sayHello);    //    상대적으로 적힘

2. 에러처리 미들웨어

Express 에러 처리 방법

: 미들웨어 내부에서 처리

: 각각 미들웨어에서 에러 처리

: 에러 처리 로직이 제각각

: 에러 처리 코드 중복

: 에러 처리 미들웨어에게 위임

: 일관된 에러 처리 가능

: 가장 후순위로 설정해야함.

환경 별 에러 처리

: 개발환경 설정하기

: // Windows - 서비스 환경

: set NODE_ENV = product        //    node myapp.js

//LINUX - 개발환경

: NODE_ENV = product node myapp.js

: NODE_ENV = development node myapp.js

: 환경설정 읽기

: app.get('env')

Express 써드파티 미들웨어

1. 파비콘 미들웨어

파비콘 미들웨어

: 파비콘 담당 미들웨어

: serve-favicon

: 웹브라우저의 싸이트 아이콘

> npm install serve-favicon

: 미들웨어 생성

: favicon(파비콘경로, 옵션)

: 미들웨어 중 앞 순위로 설정

> var express = require('express')
> var favicon = require('serve-favicon')
> var app = express()
> app.use(favicon(__dirname + '/public/favicon.ico'));

2. 로그 남기기

로그 남기기

: 로그

: 개발용, 버그 분석

: 사용자 행위 기록

: 운영 기록

: 로그 기록 매체

: 콘솔에 출력

: 파일, 데이터 베이스에 기록

: 이메일, SMS 등....

로그 남기기 - console

: console.info, log, warn, error ()

로그 미들 웨어 - morgan

: 로그 모듈 : morgan

: 간단한 설정

: 요청과 응답을 자동으로 로그 남기기

: morgan 설정

: morgan(format, options)

: 로그 포멧

: combined

: common : addr, ,user, method, url,...

: 사용 예

> var morgan = require('morgan')

> app.use(morgan('dev'))

: 요청과 응답 자동으로 기록

: 미들웨어 중 앞 순위로 설정

로그 미들웨어, 모듈 : winston

: 다양한 형태로 로그 남기기

: 모건 보다 다양한 형태로 남길 수 있음

: 파일로 남기기, 데이터 베이스에 저장

: email, sms, 알림 서비스 사용

: 서비스 운영 시 콘솔을 항상 볼 수 없기 때문에 필요함.

: 로그 기록 매체 : Transport

: 기본제공 Transport

: Console

: File

: Http

: Transport 추가/삭제

: winston.add(winston.transport.File, {filename:'service.log'});

: winston.remove(winston.transports.Console);

: 추가한 방법 모두 출력이 됨.

: 로거를 생성해서 사용자 정의로 만들 수 있음

: 에러났을때나, 사용자 로그를 남기는 등 다양한 상황에 맞추어 다르게 사용가능

: 별도 설치 Transports

: DailyRotateFile = 매일 새로운 파일로 교체하면서 로그를 남기도록 하는거

: CouchDB, Redis, MongoDB ..

: Mail transport

: Notification Service(Amazon SNS)

3. BodyParser

: post 등 버퍼를 통해 입력을 받을때 편하게 요청 메시지 바디를 파싱할 수 있도록 하는 모듈

: 바디메시지 인코딩 타입

: JSON, Raw, Text, URL-Encoded

: 멀티파트 지원안됨

: formidable, multer 등 써드 파티 미들 웨어 사용

: 옵션을 통해 메시지 크기 여러 옵션을 적용가능

: bodyParser.json()

: bodyParser.urlencoded()

바디 파서의 결과

: 파서 결과 - req.body

4. 메소드 오버라이드

메소드 오버라이드

: HTML 폼은 GET과 POST만 가능한데, DELETE와 PUT을 사용할 수 있도록 도와줌


Express 템플릿 엔진

Express 템플릿

HTML 출력

: 클라이언트가 웹 브라우저

: 응답 메시지 형태 - HTML

: 화면 전환

: HTML 구성요소

: 문서 구조 태그, 컨텐츠, CSS, JS

템플릿

: 뷰와 제어코드(데이터) 분리, 결과물 - HTML

템플릿 엔진

: ejs, jade

: Express 템플릿 설정

: app.set('views', 템플릿 폴더)

: app.set('view engine', 템플릿 엔진)

: 템플릿에 적용 : 렌더링

: res.render(파일명, 변수, 콜백)

2. 템플릿 엔진 EJS

템플릿 엔진 EJS

: 특징

: HTML 태그 그대로 사용

: 코드 실행 : <% %>

: 결과 출력 : <%= %>

3. 템플릿 엔진 Jade

Jade

: 특징  

: 간결한 문서 구조 표현

: 들여쓰기를 이용한 문서 구조

: 코드작성은 - 기호를 앞에

: 속성은 () 안에

: = 기호로 변수 출력

: = 기호와 문자열 출력, Escaped

: !=기호와 문자열 출력, Unescaped

: interpolation

: escaped : #{val}

: Unescaped : !{val} 

: if 조건문

: - 없이 사용

: 들여쓰기로 종료








'프로그래밍 > Nodejs' 카테고리의 다른 글

Nodejs와 MongoDB  (0) 2017.04.27
Node.js와 MySQL  (0) 2017.04.27
RESTful  (0) 2017.04.24
모바일서버  (0) 2017.04.24
HTTP POST요청  (0) 2017.04.16

1. REST 서비스

REST

: Representational State Transfer

: 로이 필딩, HTTP 프로토콜 주요 저자

: 사전 정의 : 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍쳐

: 네트워크를 이용해서 자원에 접근하고 자원을 다룰수 있는 아키텍쳐

: 90년대 웹 도입과 성장 시대에 웹 기반 소프트웨어의 이상적인 아키텍쳐 제시

REST 아키텍쳐의 제한 조건

- 클라이언트/서버 : 요청과 응답 기반

- 상태 없음 : 클라이언트 상태와 관계없이 요청으로만 응답

- 캐시 : 클라이언트는 서버의 응답을 캐쉬, 네트워크 비용 절감

- 계층화 시스템 : 서버는 다양한 형태의 중간계층을 이용해서 확장할 수 있다.

: 클라이언트는 서버의 계층에 무관하게 통신을 할 수 있다.

- Code on Demand : 리소스를 다룰수 있는 코드 전송

- 인터페이스 일관성 : 시스템구조를 단순화시키고 작은 단위로 분리해서 독립적으로 개선하고 확장할 수 있다.

REST 인터페이스 원칙

- 자원 식별 : 개별 리소스를 식별할 수 있어야 한다.

- 메세지로 리소스 조작 : 메세지에 작성한 리소스를 다루는 정보를 이용해서 리소스를 얻어오거나 리소스를 조작한다.

- 자기 서술적 메세지 : 요청과 응답 메세지에는 메세지를 처리할 수 있는 정보를 포함한다.

- 하이퍼 미디어 : 하이퍼링크를 이용해서 유기적으로 연결된 문서로 쉽고 간단하게 정보를 접할 수 있다.

2. 서비스 설계 가이드

REST 아키텍처를 기반으로 서비스 작성하기

: HTTP 프로토콜 사용

: 인터페이스 설계

: 리소스 접근하는 인터페이스 (URL)

: 리소스를 다루기 위한 HTTP 메소드

: 요청과 응답 메세지 설계

: 요청 메세지 구조

: 응답 메세지 구조

인터페이스 설계

: 간단하고 직관적인 API

: 리소스를 다루는 행위는 HTTP 메소드 사용

: GET, POST, PUT, DELETE

: API 버전

: URL에 버전 명시할 수 있음 /v1/...

: 명사형 단어 사용 권장

: 목록 형태의 리소스를 다루는 API는 복수형 명사

: 목록에서 특정 조건으로 필터링 : 쿼리 문자열

응답메세지 (JSON)

: 프로퍼티의 이름

: 의미를 충분히 반영

: 카멜 케이스

: 예약어 사용하지 말것

: 응답 메세지 구조

: 데이터와 보조 데이터 활용

: 에러 발생시 에러 정보 제공

메시지 구조

: 데이터와 메타데이터, 에러정보, 페이지 정보

3. 영화 정보 서비스 설계

영화 정보 제공 웹 서비스

: 컨텐츠 : 영화정보

: 미디어 타입 : JSON

: HTTP 메소드 : GET, PUT, POST, DELETE

4. 영화 정보 서비스 작성

: REST 서비스 작성

: http 모듈로 만듬

: 라우팅, 요청/응답 방법 익히기



'프로그래밍 > Nodejs' 카테고리의 다른 글

Node.js와 MySQL  (0) 2017.04.27
Express  (0) 2017.04.24
모바일서버  (0) 2017.04.24
HTTP POST요청  (0) 2017.04.16
HTTP 서버  (0) 2017.04.16

1. 모바일서버 

서버

* 서버 구분

: 웹기반 서비스 서버

: 모바일 앱을 위한 서버 : 모바일 서버

* 웹과 모바일 서버는 뭐가 다른가?

: 웹기반 서비스

: 웹브라우저

: 모바일 웹 브라우저

: 모바일 서버

: 네이티브 앱

: 클라이언트의 차이이다.

웹기반서비스

: HTML - 이미지, js, css, 웹페이지

모바일 클라이언트

: XML, 스토리 보드를 통해 자체 UI를 구성

: 데이터 표현 문서 포멧

: JSON, XML

: 화면이동은 모바일 앱에서 담당

: PRG 패턴 불필요

서비스 

: 웹 + 모바일 지원 서비스 만들기

: API 서비스

: HTML 서비스

2. JSON

JSON(Javascript Object Notification)

: 초기 자바 스크립트에서 사용하던 포멧

: 프로퍼티 - 이름 : 값 쌍으로 구성

: 이후 다양한 분야에서 사용

: 문서크기가 작아서 네트워크를 이용해서 주고 받기 편리

: 기계 해석 가능

JSON의 데이터 타입

숫자 : 숫자만

문자열 : 따움표

부울 : true/false

null : null

배열 : 대괄호 []

객체 : 중괄호 {}

3. JSON 요청과 응답

JSON 다루기

: JSON 객체

: V8 내장 클래스, 모듈 로딩 불필요

: JSON 생성

: JSON.stringfy()

: JSON 파싱

:JSON.parse()

JSON을 이용한 요청과 응답

JSON 요청

: 요청 메시지의 바디에 기록된 JSON

: 요청 객체에서 바디 메세지 분석

: JSON.parse()

JSON 응답

: 응답메시지 바디에 JSON 기록하기

: 응답 데이터에서 JSON 생성

: JSON.stringfy()

: Content-Type : application/json

4. XML

XML 이란?

: XML - eXtensible Markup Language

: Markup 언어 : 메타데이터로 문서 구조 표현

: 기계해석 가능

: HTML, XML

: 사용분야

: 오피스 어플리케이션

: 안드로이드, iOS 레이아웃 정의 파일    

HTML vs XML

HTML

: 웹브라우저를 위한 언어

: 사람을 위한 렌더링 정보 - h1 태그

XML

: 기계해석을 위한 언어

: 코드로 분석 가능  - title 태그

XML 구성요소

: 태그
: 앨리먼트
: 어트리뷰터
: 마크업, 문서

XML 구성

: XML 선언

: <?xml version="1.0" encoding = "UTF-8"?>

: 엘리먼트 : 논리단위

: Tag로 구성됨

:  시작, 끝 태그

: 태그 내 "이름=값" 으로 세부사항 표현

5. XML 요청과 응답

XMl 요청 분석

: XML 에서 데이터 분석

: XML 파싱

XML 응답

: 데이터에서 XMl 만들기

XML 분석

: XML 파서 모듈

: libxmljs

: xml-stream

: xmldoc

: XML 파서 방식

: DOM 파서

: SAX 파서

: PULL 파서

DOM 파싱

: DOM - Document Object Model

: 각 문서의 요소(XML-태그)를 객체화 

: 부모노드, 자식노드, 형제노드

: Node

: getChildNode 등등..

XML 응답

: XML 생성 모듈 = jstoxml



'프로그래밍 > Nodejs' 카테고리의 다른 글

Express  (0) 2017.04.24
RESTful  (0) 2017.04.24
HTTP POST요청  (0) 2017.04.16
HTTP 서버  (0) 2017.04.16
http 통신  (0) 2017.04.16

1. Linked List

소개

: 리스트를 구현하는 기법 중 가장 간단한 방법으로 꼽히는 자료구조

: 노드를 연결해서 만드는 리스트

: 노드 - 리스트의 각 요소

: 링크들 리스트의 노드 구성

: 데이터

: 포인터

: 헤드 노드 - 노드 ... 노드 - 테일 노드


링크드 리스트의 주요 연산

: 노드 생성/소멸

: 노드 추가

: 노드 탐색

: 노드 삭제

: 노드 삽입




최근 딥러닝에 관심을 가지게 되면서 공부를 하고있는 발자취를 남깁니다! 

처음 공부하시는 분들을 이렇게 따라가시면 좋을 것 같습니다.

1. 딥러닝 시작하기

https://www.youtube.com/playlist?list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm

: 홍콩 과기대 교수님 강의로써, 굉장히 짜임새 있게 구성된 강의입니다. 

: 머신러닝과, 딥러닝에 대한 역사적 흐름부터 배울 수 있고, 실제 코드를 구현해보는 것까지(NN,CNN,RNN...) 실습해볼수 있습니다.


2. 텐서플로우 시작하기

https://tensorflowkorea.gitbooks.io/tensorflow-kr/g3doc/get_started/basic_usage.html

: 딥러닝을 할 때 가장 많이 사용되어지는 프레임워크인 텐서플로우 한글 문서입니다.

: 한국 텐서플로우 사용자들이 모여 텐서플로우를 번역하고 있습니다.

: 최근에 등장한 API인 만큼 문서가 명료하고 간결하게 작성되어 보기 편하게 되어있습니다.


3. 추후 업데이트 하겠습니다.


1. POST 요청

POST 요청

: GET요청

: URL로 요청정보를 전달, URL만 분석

: 길이제한, 암호화 불리

: POST 요청

: 메시지 바디로 요청 정보 전달

: 바디 분석 필요

: 웹브라우저에서 주소 입력 : GET 요청

: 웹브라우저의 폼 입력 : GET/POST 요청

: 폼 구성요소

: method : post, get

: action : 요청 경로

HTML 폼 

: 폼구성요소 : input

: type, name

폼 인코딩 

: 폼요청 - 요청바디에 요청 정보 작성

: 요청 바디에 메시지 인코딩방식 : enctype

: application/x-www-form-unlencoded

: 이름=값 방식으로 작성, 쿼리문자열

: key1=value1&key2=value2...

: multipart/form-data

: 파일, 글자등 여러 데이터 전송

: text/plain

: json/xml

2. POST 요청 처리

: 요청 메시지 - request.IncomingMessage

: Readable Stream

: 이벤트 - data, end

: data 이벤트에서 데이터를 차곡차곡 받고

: end 이벤트 함수 호출 시 querystring 모듈로 parse하여 query를 얻는다.

: Post요청 후 Refresh 하면, 중복 Post 요청이됨.

PRG 패턴

: 중복 Post요청 방지

: Post요청 처리 후 redirect 응답 - 주소를 다른곳으로 옮기기

: PRG(Post-Redirect-Get) 패턴

: 리프레쉬 - Get 요청 중복은 괜찮음

: 응답 메세지 작성 코드

: Redirection : 클라이언트 주소 옮기기

3. HTTP 클라이언트

: POST 맨

: BODY, x-www-form-urlencoded

POST 요청 2 

1. 멀티파트 요청

POST 요청 메시지

: SNS서비스 중 접하는 Post 요청

: 사진올리기

: 글과 사진 올리기

: 메시지 바디 기록 방식

: multipart/form-data

멀티파트 메시지 구성

파트 구분 정보

:  content-type 헤더 항목의 boundary로 정의

: Content-Type:multipart/form-data; boundary = XXXYYYZZZ

: 메시지 바디 내 파트 구성

: 파트 구분자(--XXXYYYZZZ) // 마무리 때에는 --XXXYYYZZZ--

: 파트 인코딩

: 파트 내 정보

HTML 폼

: 폼 enctype : multipart/form-data

: input 타입 : file

2. 멀티 파트 요청 분석

: 멀티 파트 요청 분석

: 메시지 요청 헤더

: Content-Type:multipart/form-data; boundary = XXXYYYZZZ

: 위 정보 확인

: 메시지 바디 분석

: 각 파트 구분

: 파트별 구분

: 분석하는게 복잡하고 여려워서 모듈을 사용한다.

멀티파트 분석 모듈

: formidable

: 요청 분석 클래스, 파일 받는 클래스

: 이벤트 - field, file, aborted, end // 프로퍼티 - upleadDir, keepExtension, multiples

: multer

업로드된 파일

: 업로드 설정 폴더로 저장

: 파일 이름 변경

3. 파일 업로드 서비스

: 파일 업로드 - 임시폴더

: 파일 업로드 후

: 파일을 임시 폴더 -> 리소스 저장소로 이동

: 이름이 충돌되지 않도록 이름 변경

: 날짜, 일련번호, 사용자 계정...







'프로그래밍 > Nodejs' 카테고리의 다른 글

RESTful  (0) 2017.04.24
모바일서버  (0) 2017.04.24
HTTP 서버  (0) 2017.04.16
http 통신  (0) 2017.04.16
흐름제어 - 콜백, Async모듈, Promise  (0) 2017.04.15

1. HTTP 서버

서버 구동 코드

> var http = require('http');

> var server = http.createServer(function(req,res){

>    res.end('Hello World');

> }).listen(3000);

2. HTTP 요청

: 클라이언트 요청 분석

: request 이벤트 리스너의 파라미터

: req - IncomingMessage

- message.url : 요청 url, 경로와 쿼리 문자열

- message.method : 요청 메소드

- message.headers : 요청 메시지의 헤더

- message(streamable) : 요청 메시지 바디

: URL분석하기 : URL 모듈이용

: url.parse(URL);

3. HTTP 응답

응답메시지

: 응답메시지 : http.ServerResponse

: 상태코드와 상태 메시지

: 응답 메시지 헤더

: 응답코드, 메시지 헤더 작성 함수 : writeHead

: 개별 헤더 작성하기 : setHeader

: 응답 메시지 바디

: write, end 함수

: 헤더를 작성한뒤 작성해야한다.

4. HTTP서버 작성

정적파일요청

: 정적인 컨텐츠(이미지, html, 음악 등) 요청

: url 분석해야 한다. // path 모듈을 사용

: fs 모듈 사용

: 정적파일 찾기

: 파일로딩, 응답

: 스트림파이프

: 입력스트림, 출력스트림 간의 파이프 연결

: 모두 읽지 않아도 되기 때문에, 메모리 효율성과 대기시간을 줄일수 있다.

: 파비콘 - 웹사이트의 아이콘이미지

: 요청 URL의 경로를 실제 파일 경로로 매핑

웹 페이지 서비스

: 요청

: 인덱스, 파비콘, js, css, 파일 등등...





'프로그래밍 > Nodejs' 카테고리의 다른 글

모바일서버  (0) 2017.04.24
HTTP POST요청  (0) 2017.04.16
http 통신  (0) 2017.04.16
흐름제어 - 콜백, Async모듈, Promise  (0) 2017.04.15
NPM을 이용한 모듈관리  (0) 2017.04.15

1. HTTP 통신

HTTP

: 웹(WWW)의 주역

: Hyper Text Transfer Protocol

: 하이퍼텍스트 - 하이퍼 링크로 논리적으로 연결되어 있는 문서

HTTP 통신의 특징

: HTTP

: 요청, 응답

: 웹브라우저 - 주소입력 - 요청 - 웹서버 - 응답 - 웹브라우저

URL

: Uniform Resource Location

: 알파벳, 숫자, 하이픈, 언더스코어, 점, 틸드

2. HTTP 요청

HTTP 메시지 구조

: 요청메시지

: 요청 라인, 요청 헤더, 요청 바디

HTTP 메소드

: 리소스를 다루는 행위

: GET, POST, PUT, DELETE

요청헤더

: 헤더는 키:값 방식으로 작성

- Accept : 클라이언트가 받을 수 있는 컨텐츠

- Cookie : 쿠키

- Content-Type : 메시지 바디의 종류

- Content-Length : 메시지 바디의 길이

- If-Modified-Since : 특정날짜이후에 변경됬을때만

요청 정보 전달

: URL을 이용해서 요청 정보 전달

: GET메소드, TRACE 메소드

: 경로와 쿼리 스트링 사용

: 메시지 바디를 사용하지 않는다.

: URLEncoded 방식

: 메시지 헤더

- Content-Type : application/x-www-form-urlencoded

: 메시지 바디 : 쿼리 문자열

: 이름:값 으로 보냄

: JSON/XML

: application/json

: json 형태로 보냄

: 멀티 파트를 이용한 요청 정보 전달

: 바이너리 파일을 올리는 경우에 주로 사용

: 하나의 메시지 바디에 파트를 나눠서 작성

: 메시지 바디를 사용 여부

: URL로 요청 정보전달 : 바디 분석 불필요

: 바디의 인코딩 방식

3. HTTP 응답

HTTP 메시지 구조

:응답라인, 응답헤더, 응답바디

응답 메시지

: 버전, 상태코드, 상태메시지

상태코드

: 서버의 응답 코드

: 1xx - 정보, 2xx - 성공, 3xx - 리다이렉션, 4xx,5xx - 오류

응답 메시지 헤더

: 주요 헤더 필드

: Content-Type : 바디데이터의 타입

: Content-Length : 바디데이터 크기

: Set-Cookie : 쿠키 설정

: ETag : 엔티티 태그

응답메시지 바디

: 바디데이터 

: HTML, XML/JSON, Octet Stream 등

: 바디 기록방식 : Content-Type 헤더 필드

응답메시지 

: 컨텐츠 타입

: 메시지 헤더에 기록

: 필드이름 content-type

: 대분류/소분류

: text/plain, text/html, application/xml ...

: 컨텐츠 타입이 맞지 않으면 제대로 출력되지 않는다.

4. HTTP 모듈

HTTP모듈

: require('http')

HTTP 모듈 클래스

: 서버용 클래스

: HTTP 클라이언트

5. HTTP 서버

HTTP 서버

: 주요 이벤트

: request - 클라이언트 메시지 도착

: connection, close

: 서버 동작 시키기

: 서버 객체 생성

: listening

: 포트

: 0~1023 - 미리 정의된 포트 : 관리자 권한 필요

: 1024 ~ 49151 : 등록된 포트

: 49152 ~ 65535 : 동적 포트

: 포트바인딩 실패

: 이미 사용중, 권한 없음

6. HTTP 클라이언트

HTTP 클라이언트

: 클라이언트 요청

: 바디 없이 요청 보내기












'프로그래밍 > Nodejs' 카테고리의 다른 글

HTTP POST요청  (0) 2017.04.16
HTTP 서버  (0) 2017.04.16
흐름제어 - 콜백, Async모듈, Promise  (0) 2017.04.15
NPM을 이용한 모듈관리  (0) 2017.04.15
Node.js 모듈  (0) 2017.04.14

+ Recent posts