[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개의 댓글

관련 채용 정보