분류 전체보기
-
MochaJavascript/Node.js 2020. 1. 28. 10:43
mocha란? node.js에서 사용하는 테스트 프레임워크이다. 작성한 함수가 잘 동작하고 제대로된 값을 반환하는지 검증하는 과정을 도와준다. 설치방법 npm install 명령으로 설치하고, package.json의 script 항목에 명령을 설정한다. 사용방법 descript() 는 테스트 범위를 설정한다. it()는 단위 테스트를 설정한다. 인수로 사용한 done은 비동기 단위 테스트를 완료할 때 유용하다. it() 의 콜백 인수로 done을 사용하면 자동으로 비동기 테스트를 인식하고, 비동기 로직이 완료 후 done()을 실행하면 테스트가 완료된다. 비동기 테스트는 timeout으로 2초가 경과하면 자동으로 테스트 실패가 된다. mocha에서는 before(), after(), beforeEach..
-
middlewareJavascript/Node.js 2020. 1. 22. 11:58
미들웨어 요청과 응답 중간에 위치하여 미들웨어라고 부른다. 라우터와 에러 핸들러 또한 미들웨어의 일종이므로 미들웨어가 express 전부라고 해도 과언이 아니다. 미들웨어는 주로 app.use와 함께 사용한다. app.use의 인자로 들어있는 함수가 미들웨어이다. 제일 위의 logger('dev')부터 시작해 미들웨들을 순차적으로 거친 후 라우터에서 클라이언트로 응답을 보낸다. express 미들웨어 순서 logger -> logger(morgan) -> json, urlencoded -> cookieParser -> router -> 404 handler -> error handler -> response morgan 콘솔에 나오는 GET / 200 51.267 ms -1539 와 같은 로그들은 모두 ..
-
expressJavascript/Node.js 2020. 1. 22. 11:47
서버 제작 시, 불편함을 해소하고, 편의 기능을 추가한 웹 서버 프레임워크이다. 또한, http 모듈의 요청과 응답 객체에 추가 기능을 부여했다. 설치 방법 npm i -g express-generator 사용 방법 express [프로젝트 이름] 구조 app.js : 핵심적인 서버 역할을 한다. bin/www : 서버를 실행하는 스크립트 public : 외부에서 접근 가능한 파일들을 모아둔 디렉토리(image, javascript, css) views(view) : 템플릿 파일을 모아둔 디렉토리(ejs, pug, html) routes(controller) : 주소별 라우터들을 모아둔 디렉토리이다. 서버의 로직은 모두 routers 폴더 안에 있다. 데이터베이스 부분은 models(model) 폴더에 ..
-
http vs https vs http2Today I Learned 2020. 1. 22. 11:35
HTTP/1.1 HTTP(HyperText Tranfer Protocol)는 WWW 상에서 정보를 주고 받는 프로토콜이다. 클라이언트가 서버에 HTTP를 통해 웹 페이지나 이미지 정보를 요청하면 서버는 이 요청에 응답하여 요구하는 정보를 제공하게 된다. 결국, HTTP는 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약이다. HTTP는 텍스트 교환이다. 바이너리 데이터로 되어있는 것도 아니고 단순 텍스트를 주고 받기 때문에 누군가 네트워크에서 신호를 가로채어 본다면 내용이 노출된다. HTTPS HTTPS는 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer)프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고 받는 통신 규약이다. HTTP 메세지(text)를 암호화하는 것이..
-
RESTful APIJavascript/Node.js 2020. 1. 22. 11:00
REST API REpresentational State Transfer의 약어이다. 네트워크 구조의 한 형식으로 서버의 자원을 정의하고, 자원에 대한 주소를 지정하는 방법을 제시한다. 주소는 의미를 명확히 전달하기 위해 명사로 구성된다. (ex. /users, /sports ..) 주소 외에도 HTTP request method를 사용한다. GET, POST, PUT, DELETE, PATCH 다섯 가지 메서드를 사용한다. 이렇게 주소와 메소드만 보고 요청의 내용을 명확하게 알 수 있다는 장점이 있다. 또한, GET 메소드 같은 경우 브라우저에서 캐싱할 수도 있어서 같은 주소의 GET 요청을 할 때 서버가 아닌 캐시에서 가져올 수 있다. 그리고 HTTP 프로토콜을 사용한다면 클라이언트가 어떤 플랫폼이던..
-
npmJavascript/Node.js 2020. 1. 21. 17:55
npm Node Package Manager의 약자로, 이름 그대로 노드 패키지 매니저이다. package.json 수많은 패키지를 추가하다 보면 어딘가 기록해둘 필요성이 있다. 그래서 설치한 패키지의 버전을 관리하는 파일이 생겼는데 package.json이 그것이다. 프로젝트를 시작하기 전에 package.json부터 만들고 시작하라. npm init 명령어로 만들 수 있다. 패키지를 설치할 때, 개발 중에만 사용할 경우, --save-dev 옵션을 사용한다. -g 옵션을 사용할 경우, 전역으로 설치해 console에서도 사용할 수 있다.
-
cookie & sessionJavascript/Node.js 2020. 1. 21. 17:45
필요성 클라이언트에서 보내는 요청의 한 가지 큰 단점은 누가 요청을 보냈는지 모른다는 것이다. 이 문제는 쿠키와 세션으로 해결할 수 있다. 쿠키 서버로부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 요청할 때마다 쿠키를 동봉해서 보낸다. 서버는 쿠키를 읽어 사용자를 파악한다. 브라우저는 쿠키가 있다면 자동으로 동봉해서 보내주므로 따로 처리할 필요가 없다. 서버에서 브라우저로 쿠키를 보낼 때만 코드를 작성 해야한다. 개인정보 유출 방지를 위해 쿠키를 주기적으로 지우라는 말이 바로 이러한 이유 때문이다. 쿠키는 요청과 응답의 header에 저장된다. 쿠키는 보안성이 없고 조작될 위험성이 있어 개인정보를 쿠키에 넣어두는 것은 적절하지 못하다. 세션 쿠키와 동일하지만 어느정도 암호화를 시키기 때문에 서버에..
-
Node.js 란?Javascript/Node.js 2020. 1. 21. 17:32
서버 클라이언트에게 서비스를 제공하는 컴퓨터 또는 프로그램이다. 노드는 서버로도 사용할 수 있는 것이다. 명심하자. 자바스크립트 런타임 런타임이란 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 이 말은 즉, 자바스크립트 프로그램을 실행할 수 있게 해준다는 것이다. 구글에서 만든 V8 엔진은 다른 엔진에 비해 속도가 매우 빨라서 노트 프로젝트가 진행된 것이다. 노드는 V8과 libuv 라는 라이브러리를 사용한다. 둘 다 C, C++로 구현했으나 자동으로 V8, libuv에 자동으로 연결해주므로 C, C++을 따로 공부할 필요는 없다. 이벤트 기반 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미한다. (네트워크 요청, 클릭 등) 이것을 event listener에 callbac..