[TIL] Day36- Web Server(2)

공부중인 개발자·2021년 5월 28일
0

TIL

목록 보기
37/64
post-thumbnail

Achievement Goals

  • node.js modules의 사용

    • CommonJS를 이용한 모듈 내보내기/불러오기를 할 수 있다.
  • 라우팅과 API

    • 라우팅(조건에 따른 분기)을 이해하고, 이를 서버 코드에서 구현할 수 있다.
    • 클라이언트가 사용할 수 있도록, 서버 API 문서를 직접 작성할 수 있다.
  • Express 라이브러리

    • express 라이브러리가 어떤 작업을 단순하게 만드는지 이해할 수 있다.
    • 미들웨어의 개념을 이해할 수 있다.
  • 서버 개발과 디버깅

    • CRUD 를 수행하는 웹 서버 개발 방법을 익힐 수 있다.
    • 서버 개발을 돕는 다양한 툴들을 익힐 수 있다.



  • CommonJS를 이용한 모듈 내보내기/불러오기를 할 수 있다.

CommonJS : 웹 브라우저 밖의 자바스크립트를 위한 모듈 생태계의 규칙을 설립하기 위한 프로젝트

exports를 통한 내보내기/ 가져오기

//func.js
function func1 (param) {
	// 생략
}

exports.func1 = func1
const obj = require('./func')

obj.func1(10)
obj.func2(20)

module.exports를 통한 내보내기/ 가져오기

// func.js
const obj = {
	
    func1: function (num) {
    	// ...
    },
    
    func2: function (num) {
    	// ...
    }
}

module.exports = obj
const obj = require('./func')

obj.func1(10)
obj.func2(20)

특별한 상황이 아니라면 module.exports를 사용하는 것이 권장

라우팅과 API

  • 라우팅(조건에 따른 분기)을 이해하고, 이를 서버 코드에서 구현할 수 있다.

라우팅 : 메소드와 URL(/lower, /upper 등)로 분기점을 만드는 것

클라이언트는 특정한 HTTP 요청 메소드(GET, POST 등)나 서버의 특정 URI(또는 경로)로 HTTP 요청을 보냅니다.
라우팅은 클라이언트의 요청에 해당하는 메소드와 Endpoint에 따라 서버가 응답하는 방법을 결정하는 것입니다.
if (req.url === '/lower') {
      let data = '';
      req.on('data', chunk => {
        data = data + chunk;
      });
      req.on('end', () => {
        data = data.toLowerCase();
        res.writeHead(201, defaultCorsHeader);
        res.end(data);
      });

URL (/lower) 에 POST 메소드를 이용할 때 사용한 코드
이렇게 req.url === '/lower'를 이용할 수도 있고 express 를 이용해서
app.post('/lower', func(){}) 이렇게 이용할 수도 있다.

  • 클라이언트가 사용할 수 있도록, 서버 API 문서를 직접 작성할 수 있다.

스프린트에서 배운 것은 API 메소드 중 POST 와 OPTIONS를 이용하는 방법이었다.
클라이언트가 사용할 수 있도록 서버 API 문서를 만들 수 있었지만 만들 수 있었을 뿐이지 잘 만들지는 못할 것 같다.

Express 라이브러리

  • express 라이브러리가 어떤 작업을 단순하게 만드는지 이해할 수 있다.

express 라이브러리를 이용하게 되면request에서 method의 확인 할 필요 없이 바로
app.post('/lower', func(){}) 과 같이 필요한 method에 맞게 작성할 수 있어서 작업이 단순해 질 수 있을것 같다.

  • 미들웨어의 개념을 이해할 수 있다.

미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는 함수

아직 미들웨어의 개념에 대해선 완벽하게 알 수 없다. 다만 미들웨어를 자주 사용하는 상황이 4가지 이고

1.모든 요청에 대해 url이나 메소드를 확인할 때
2.POST 요청 등에 포함된 body(payload)를 구조화할 때(쉽게 얻어내고자 할 때)
3.모든 요청/응답에 CORS 헤더를 붙여야할 때
4.요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때

관련 코드를 적어놓은 블로그 및 사이트를 찾았다.
https://expressjs.com/ko/guide/using-middleware.html
https://velog.io/@yesparrot/express%EC%99%80-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4-3zhxqc5w


아직 express에 대해 공부를 더 해야겠다고 생각이 든다. express를 조금 알거 같으니 middleware가 나오는데 middleware는 아무리 요리보고 조리봐도 이해를 못하는 부분이 훨씬 많기 때문이다. 이제 시작인데 벌써 지치지 말자

profile
열심히 공부하자

0개의 댓글