Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

coding etude

201006 [Server / node.js] 본문

Javascript TIL

201006 [Server / node.js]

코코리니 2020. 10. 6. 22:12

node.js 란??(공식 홈체이지 : nodejs.org/ko/docs/)

 :  자바스크립트 코드를 원래의 기계언어로 직접 컴파일 해주는 javascript runtime(구동 환경).

 

node.js 는 비동기적 논블로킹 모델로 되어있기 때문에 속도가 빠라다는 장점이 있다.

 

node.js는 설치 시 같이 번들링 되어 있는 모듈들도 포함되어 있다.

(fs/ http/ url/ path) = require('(fs/ http/ url/ path)') 의 형식으로 바로 사용이 가능하다.

 

node.js를 사용함에 있어 npm(node package manager) 은 가장 중요한 세계에서 가장 큰 오프소스 라이브러리 생태계 중 하나이다.

코딩 시 필요한 라이브러리 및 개발 환경에 필요한 오션들을 npm을 통하여 다운 받을 수 있다.

 ps. npm을 통하여 다운 받은 목록은 package.json이라는 프로잭트의 속성값을 저장하는 파일에 저장이 되는데,

구동에 직접적으로 필요한 항목은 dependencies 라는 항목에 저장이 되고 따로 테스트 및 개발에 필요하지만 구동에 필요없는 것들은 Dev-dependencies 에 따로 저장하여 구분하여야 한다.

 

package.json을 조금 더 알아보자면 package.json은 프로잭트에 관한 정보가 담겨있는 파일이다.

프로젝트 네임/버전/기술정보 // 스크립트 항목 // 개발에 필요한 프로그램 의 종류를 가지고 있다.

 

그럼 이제 이 node.js를 사용하여 서버를 서버를 만들어보자.

 

이전 포스팅에서 말했듯이 클라이언트에서 서버로 요청을 보내면 http 로 인해서 header/ body 가 전송이 된다.

그럼 응답의 내용역시 header/body로 이루어 져있는데 이때 status(state: 현재 상태 / status: 현재 상황)를 나타내는 코드를 가장 상단에 전송해 준는데 다음과 같다.

request data의 구조
response data의 구조

200~299 : 성공

300~399 : 성공했으나 다른주소로 보냄(도메인의 변경 및 기타 이유)

400~499 : 잘못된 요청(ex 404 not found)

500~500 : 서버 오류

 

서버 통신상 문제가 있다면 status 라인을 살펴보고 문제의 이유를 짐작 해 볼 수 있다.

 

그럼 이제 node.js의 공식문서를 한번 살펴보자.

공식문서의 최신버전 문서에 들어가보면 사용할 수 있는 여러가지 메소드들이 나와 있으니 어떤것들이 있는지 시간날때 살펴보자!!

 

const http = require('http')  // 어떤 규약을 사용 할지 모듈을 가져와야 한다.
const PORT = 5000;
const ip = localhost;

const defaultCorsHeader = { // hearder 의 내용을 설정해 주어야 한다.
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
  'Access-Control-Allow-Headers': 'Content-Type, Accept',
  'Access-Control-Max-Age': 10
};

const server = http.createServer((reqest, respones){  // createServer로 서버를 만든다.

  if(request.method === 'OPTIONS') { // preflight request : cors 처리를 위함
      respones.writeHeader(200, defaultCorsHeader) // header 에 status 를 보낸다.
      respones.end() // end() 로 접속을 종료한다.(connectionless)
  }
  else if(reqrest.method === 'GET' && request.url === '/경로'){ // GET 요청일때 데이터 처리
	  respones.writeHeader(200, defaultCorsHeader) // header 에 status 를 보낸다.
      respones.end(JSON.stringify(date)) // end() 로 body를 보내고 접속을 종료한다.(connectionless)
  }
  else if(reqrest.method === 'POST' && request.url === '/경로'){ // POST 요청일때 데이터 처리
      // POST 일때는 데이터를 받아서 가공해야한다.
      reqest
          .on('data', () =>{/*받아온 데이터 parse*/}) // on = then 과 동일한 기능을 한다.'data' 요청된 파일을 받아올때 사용
          .on('end', ()=>{/*데이터를 서버에 저장 후 stringify 후 전송*/}) // 'end' 데이터를 전송하고 접속을 종료한다.  
  }
  else{
      //error 처리
  }

})

위의 방법은 꼭 GET / POST 요청에 대한 응답을 간략하게 적어놓은 것이다. 

더 깊은 내용과 더 많은 메소드를 사용해 보려면 공식문서를 참고해서 테스트 해보자.

 

다음 포스팅은 지금까지 알아본 node.js 를 사용하여 서버를 만드는 과정을 express 라는 라이브러리를 사용하여 

refactor 해보기로 하겠다. 

그럼... 20000;

'Javascript TIL' 카테고리의 다른 글

201026 [SQL]  (0) 2020.10.26
201007 [commonJS & express]  (0) 2020.10.06
201006 [Client / Server]  (0) 2020.10.06
200927 [동기 / 비동기 (synchronous / asynchronous)]  (0) 2020.09.27
200927 [parse / parsing / JSON / json()]  (0) 2020.09.27