엘리스 29일차 목요일 온라인강의 express.js, rest api

치즈말랑이·2022년 5월 13일
0

엘리스

목록 보기
30/47
post-thumbnail
post-custom-banner

01

미들웨어 종류

어플리케이션 미들웨어

  • use 나 http method 함수를 사용하여 미들웨어를 연결할 수 있음
  • 미들웨어를 모든 요청에 공통적으로 적용하기 위한 방법
  • HTTP 요청이 들어온 순간부터 적용된 순서대로 동작 함

라우터 미들웨어

  • router 객체에 미들웨어가 적용되는 것 외에는 어플리케이션 미들웨어와 사용 방법은 동일
  • 특정 경로의 라우팅에만 미들웨어를 적용하기 위한 방법
  • app 객체에 라우터가 적용된 이후로 순서대로 동작함

함수형 미들웨어

index.js

const express = require('express');

const usersRouter = require('./routes/users');
const adminRouter = require('./routes/admin');
const setUser = require('./middlewares/set-user');
const adjuerQuery = require('./middlewares/adjust-query');


const app = express();

app.use(adjuerQuery);

app.get('/', (req, res) => {
    res.send("OK");
});

app.use('/users', setUser(), usersRouter);
app.use('/admin', setUser("admin"), adminRouter);

app.listen(8080);

set-user.js

const users = require('../data/users');
const admins = require('../data/admins');

const setUser = (type) => (req, res, next) => {
    const { userName } = req.query;
    if (type === "admin") {
        req.user = admins[userName];
    } else {
        req.user = users[userName];
    }
    next();
}

module.exports = setUser;

요청과 응답

GET /users?userName=alice
"USER: alice, 1"

GET /users?userName =alex
"USER: NotFound, 0"

오류처리 미들웨어

const express = require('express');

const app = express();

const hasError = (req, res, next) => {
    next("ERROR");
}

app.get('/', (req, res) => {
    res.send("OK");
});

app.get('/success', (req, res) => {
    res.send("SUCCESS");
});

app.get('/fail', hasError, (err, req, res, next) => {
    res.send(`Request failed with ${err}`);
});

// 오류처리 미들웨어 추가하기


app.listen(8080);

next() 괄호안에다가 뭘 넣으면 error처리 미들웨어의 첫번째 인자로 간다.

배열 중복제거 new Set

exports.authorList = () => {
    const authors = notes.map(({ author }) => author);
    return [...new Set(authors)];
}

new Set(배열) 하면 {} 형태로 나와서 spread operator로 다꺼낸담에 []안에 다시넣어줘야한다.

profile
공부일기
post-custom-banner

0개의 댓글