<데이터 처리 방식>
-Synchroous(동기)
직전의 일이 끝나면 다음 일 시작 (직렬)
복잡성 ↓
-Asynchroous(비동기)
여러 개의 일을 동시에 진행 (병렬)
복잡성 ↑
한 개의 작업이 완료되면 callback을 통해 처리한다.
node.js.는 비동기적인 작업을 우선시한다.

JavaScript에서는 함수가 '값'으로써 변수로 정의할 수 있다.
즉, 다른 함수의 인자로 넘기는 것도 가능
(함수로써의 이름은 없고 변수의 이름으로 호출)
Package Manager
NPM: node.js를 설치하면 함께 설치되는 PM. 이것을 기반으로 여러 프로그램을 쉽게 설치 가능.
PM2: 실행 중인 Node.js 애플리케이션을 관리하는 프로세스 매니저 프로그램. 실행 중인 애플리케이션이 강제 종료되거나 소스코드가 수정되면 자동으로 서버를 재시작시켜주는 등의 기능을 지원한다.
POST
현재까지는 데이터를 생성하는 것은 웹의 관리자만 가능하다.
다른 사람들도 데이터를 생성하여 서버로 전송할 수 있는 기능(이 필요해진다.
Form: 데이터 전송 양식

각 입력(input, textarea...)는 form에 정의된 "name"을 통해 url(query string)을 생성한다.
즉, 서버로 데이터를 전송한다.

현재(method="get")는 암호화 처리가 되지 않은 데이터 전송으로 보안에 취약하다.
(query string만으로 데이터를 생성, 수정, 삭제할 수 있는 상태)
<form action "http://서버 주소" method="post"> : 데이터 생성, 수정, 삭제
<CREATE>


node.js에서는 post 방식으로 데이터를 수신받을 때마다 callback 함수를 호출한다.
이때, 'data', 'end' 등 이벤트를 통해 수신 방식을 달리한다.
*request, reponse는 서버를 생성할 때 callback 함수의 인자

fs.writeFile(file path 및 title, data[, option], callback)
리다이렉션: 클라이언트가 서버에 특정 url을 통해 요청을 하면, 서버는 어떤 처리를 한 후 클라이언트를 헤더에 지정한 위치(Location)로 이동시킨다.
ex. 서버에 데이터 전송 후 해당 데이터의 뷰 페이지로 리다이렉션

HTTP Response Status Code 301: 해당 URL이 영구적으로 새로운 URL로 변경되었음(Permanently Moved)
HTTP Response Status Code 302: 요청한 리소스가 임시적으로 새로운 URL로 이동했음(Temporarily Moved)
<UPDATE>

수정 링크: <a href="/update?id=${title}">update</a>
*pathname: /update
*query: {id: title}
수정은 데이터 뷰 페이지에서만 접근할 수 있도록 한다. 어떤 데이터에 접근하는지 식별하기 위해 수정 링크의 query string에 id를 포함시킨다.