목록전체 글 (114)
Hello, Android!
- body-parser body-parser미들웨어는 요청의 본문을 해석하는 미들웨어이다 익스프레스 4.16.0버전부터 body-parser의 일부 기능이 익스프레스에 내장되었다 app.use(express.json())에서 요청의 본문이 json일때 해석하여, req.body에 들어간다 app.use(epxress.urlencoded({extended: false}))에서는 요청의 쿼리스트링을 해석하여 req.query에 들어간다 extended옵션에 false를 넣었는데, 해당 값이 false인 경우에는 노드에 기본적으로 내장되어있는 querystring 모듈을 사용하며 true인 경우에는 qs모듈을 사용한다 지금까지는 POST, PUT에서 본문을 받을때, 스트림을 사용하여 버퍼를 전부 받았을때를 ..
- dotenv dotenv 패키지는 .env 파일을 읽어 process.env로 만든다 .env 파일에는 키=값 의 형태로 추가하면 process.env.키 에 해당 값이 할당된다 process.env.COOKIE_SECRET 에서는 .env 파일에서 COOKIE_SECRET의 값이 된다 이와같이 .env 파일에 비밀키 등을 관리하게 되면 소스코드가 유출되어도 비밀기는 지킬 수 있다 - morgan 지금까지 로그는 console.log error 등으로 필요한 부분에 직접 로그를 출력하였다 하지만 morgan 미들웨어를 사용하면 요청과 응답에 대한 로그를 콘솔에 기록한다 app.use(morgan("combined")) 에서 morgan을 combined 모드로 실행했다 app.use는 모든 요청에 대..
지금까지 웹 서버를 만들어보며 라우팅을 했을때 if문 범벅이었다 이러한 불편함을 해결하고 각종 편의 기능을 추가한 웹 서버 프레임워크 중에서 대표적으로 많이 사용되는 것이 익스프레스 이다 우선 npm install express로 익스프레스를 설치해야한다 지난번 RESTful서버 에서 만들었던 웹 서버를 익스프레스 버전으로 다시 만들었다 코드도 절반 조금 넘는 양으로 줄었고 무엇보다 if문이 사라졌다 익스프레스를 전혀 몰라도 느낌적인 느낌으로 알것같은 수준으로 변했다!! 우선 가장 먼저 익스프레스 객체를 만들었다 익스프레스 내부에 http모듈이 있기때문에 서버로 작동이 가능하다 app.set를 통해 서버에서 사용할 포트를 env파일에 포트 번호가 있으면 해당 번호를 사용하고 없으면 8080번 포트를 사용..
npm은 node package manager의 약자로 노드 패키지 매니저 이다 노드는 자바스크립트 프로그램을 컴퓨터에서 실행 가능하게 해주며 대부분의 자바스크립트 프로그램은 패키지로써 npm에 등록되어 있어 필요하다면 해당 기능의 패키지를 npm에서 찾아서 설치해야한다 - pckage.json package.json은 패키지 마다 버전이 다르고, 각각의 버전마다 기능이 다를 수 있기때문에 항상 동일한 버전의 패키지를 설치하기 위해 기록하여 관리하는 파일이다 노드 프로젝트를 시작할때는 항상 package.json을 작성해야하며 npm에서 명령어로 지원한다 프로젝트 폴더에서 npm init 명령어로 작성이 가능하다 package name : 패키지 이름을 작성한다. 폴더 이름과 패키지 이름이 동일하면 안된..
cluster모듈을 사용하게 디면, 싱글 프로세스로 동작하는 노드가 CPU의 코어를 모두 사용할 수 있게 된다 같은 포트를 공유하는 노드 프로세스를 여러개 두어 대량의 요청이 들어왔을때 분산 처리가 가능하여 서버에 부담을 덜어줄수 있다 전반적인 모습은 스레드를 사용했을때와 비슷한 모습이다 하지만 이번에는 스레드가 아닌 cpu의 코어 수 만큼의 워커 프로세스가 만들어진다 실행시 마스터 프로세스이기 때문에 numCPUs 코어의 수 만큼 cluser에 워커 프로세스를 만든 뒤 exit 이벤트가 올때까지 기다린다 exit 이벤트의 콜백 함수 에서 worker, code, signal을 받으며 각각 - worker : 워커 프로세스 - code : 워커 프로세스가 종료되었을때 종료 코드 process.exit으로..
쿠키는 서버가 클라이언트에게 보내 클라이언트가 보관하며, 이후 서버에 요청을 할때 쿠키를 같이 보낸다 "키"="값" 의 쌍으로 이루어져 있으며, 헤더에 포함되어 서버와 클라이언트가 주고받는다 쿠키를 사용하면 정보를 통해 클라이언트는 서버에게 자신이 누구인지를 알려준다 브라우저는 쿠키를 가지고 있으면 자동으로 함께 서버에 보내주기때문에 서버에서 클라이언트에게 쿠키를 보내고 어떤 유저인지 파악하는 부분만 만들면 된다 쿠키는 헤더에 포함되어 있기 때문에 node.js에서도 쿠키를 동봉할때는 writeHead 함수에서 "Set-Cookie" 를 사용하여 보내게 된다 1 2 3 4 5 6 7 8 9 10 11 const http = require("http") http.createServer((req, res) ..
lwndnjs93.tistory.com/110 REST 클라이언트는 서버에게 주소를 통해 요청을 보낸다 특정 페이지에 대한 요청 또는 서버에게 어떤 행동을 요청한다 클라이언트가 필요한 요청의 내용이 주소를 통해 표현되기때문에 서버가 알 lwndnjs93.tistory.com 이번에는 Node에서 REST를 사용한 주소 체계로 RESTful한 서버를 만들어 보았다 간단하게 서버에 파일을 저장, 검색, 삭제 기능을 수행하도록 하였다 각 함수별로 서버에서 수행 가능한 기능을 정리하면 GET : / 를 기준으로 첫번째로 있는 파일을 제공, 파일이 존재하지 않으면 404, 읽기 실패는 500 ex) /ryan 의 경우 ryan파일을 제공 POST : / 를 기준으로 첫번째로 있는 이름으로 body를 파일 저장, ..
클라이언트는 서버에게 주소를 통해 요청을 보낸다 특정 페이지에 대한 요청 또는 서버에게 어떤 행동을 요청한다 클라이언트가 필요한 요청의 내용이 주소를 통해 표현되기때문에 서버가 알기 쉬운 주소를 사용하는것이 좋다 - REST란 REST는 서버의 모든 자원에 고유한 URI를 부여해 활용하는 것으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 의미한다 간단하게 주소를 지정할때 사용하면 좋은 약속 이라고 생각하면 될것같다 - HTTP 메서드 GET : 서버의 자원을 가져올때 사용한다 POST : 새로운 정보를 서버에 등록할떄 사용한다 PUT : 서버의 자원을 변경할때 사용한다 PATCH : 서버 자원을 일부분만 수정하고자 할때 사용한다 DELETE : 서버의 자원을 삭제할떄 사용한다 OPTION : 요..