[TIL]200929 Refactor Express

Chaegyeom·2020년 10월 9일
0

TIL

목록 보기
45/77
post-thumbnail

rotatedArraySearch
주어진 Tree 클래스에 BFSelect 메소드를 구현하세요.

BFSelect 매소드의 요구사항은 아래와 같습니다.

filter 함수를 매개변수로 받습니다.
tree 의 각 node는 해당 filter 함수를 너비 우선 방식으로 호출합니다.
filter 함수를 만족(return true)하는 tree의 node를 1차원 배열로 반환합니다.

예시 :

let root1 = new Tree(1);
let branch2 = root1.addChild(2);
let branch3 = root1.addChild(3);
let leaf4 = branch2.addChild(4);
let leaf5 = branch2.addChild(5);
let leaf6 = branch3.addChild(6);
let leaf7 = branch3.addChild(7);
root1.BFSelect(function (value, depth) {
  return value % 2;
});
// [1, 3, 5, 7]
root1.BFSelect(function (value, depth) {
  return depth === 1;
});
// [2, 3]

DFS방식은 몇번 해봐서 조금만 고생하면 어느정도 작동하게 알고리즘을 짜낼 수 있는데 BFS방식은 또 다른 방식처럼 느껴진다. 언제쯤 재귀를 원활하게 사용할 수 있을지....

Express.js

JavaScript 생태계에서, 인기있는 프레임워크(MongoDB, Express, React, Node)의 앞글자를 따서 MERN stack이라고 부른다.
이들 중 Express.js는 Node.js 환경에서 웹 어플리케이션 혹은 API를 제작하기 위해 사용되는 인기있는 프레임워크이다.

이번 스프린트는 기존에 http모듈로 작성했던 chatterbox server를 express를 이용해서 리팩토링하는 과정이다.

Express Framework의 장점

  1. 미들웨어를 붙이기 쉽다
  2. 자체 라우터를 제공한다.

기존에 http모듈을 이용해서 서버를 만들 때는 조건문을 통해서 라우팅을 해줬어야 했다.

위와같이 조건문 안에서 method를 검사해서 라우팅을 했다면 Express에서는

조건문을 사용할 필요가 없어 코드를 많이 줄일 수 있다.

미들웨어란?

요청에 대한 응답 과정 중간에 껴서 어떠한 동작을 해주는 프로그램으로, 요청에 대한 응답을 보내기 전에 미들웨어가 지정한 동작을 수행한 후 응답을 보내게 된다.


이번 스프린트에서 미들웨어를 써보진 않았지만 얕게라도 알기 위해서 알아보려고 한다

가장 단순한 미들웨어인 logger로 알아보고자 한다

위 그림은 endpoint가 /이면서, GET 요청을 받았을 때 사용하는 미들웨어이다. 주목할 것은 파라미터 순서로 req, res는 우리가 잘 아는 요청/응답이며, next는 다음 컨베이어 벨트로 넘기는 작업을 한다.

특정 endpoint가 아닌, 모든 요청에 대해서 미들웨어를 붙여보고자 한다. use라는 메소드를 이용했다.

const express = require('express');
const app = express();

const myLogger = function (req, res, next) {
  console.log('LOGGED'); // 이 부분을 req, res 객체를 이용해 고치면, 여러분들은 모든 요청에 대한 로그를 찍을 수 있습니다.
  next();
};

app.use(myLogger);

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(3000);


위와 같은 콘솔로그를 찍을 수 있다.

profile
주니어 개발자가 되고싶은

0개의 댓글