[23.11.05] WIL

yy·2023년 11월 5일

개발일지

목록 보기
23/122

이번주 한 일

  1. express, mongoose -> node 과제 lv1 제출
  2. express, prisma -> node 과제 lv2 제출
  3. express, prisma -> node 과제 lv3 준비
  4. 첫 스터디 발표

이번주 할 일

  1. node 과제 lv3, 4 준비제출

Express 미들웨어

요청 => 응답, 응답 => 요청 중간에 목적에 맞게 처리되도록 구현된 함수들이다.
미들웨어를 통해 에러 처리도 가능하며, next()를 이용하여 다음으로 넘어갈 수 있게도 만든다.

미들웨어
아래에서 next()로 다음 순서로 정의된 미들웨어를 호출.

app.use((req, res, next) => {
    console.log('Request URL:', req.originalUrl, ' - ', new Date());
    next();
});
// app.js
import express from 'express';
>
const app = express();
const PORT = 3000;
>
app.use((req, res, next) => {
  console.log('첫번째 미들웨어');
  next();
});
>
app.use((req, res, next) => {
  console.log('두번째 미들웨어');
  next();
});
>
app.get('/', (req, res, next) => {
  console.log('GET / 요청이 발생했습니다.');
  next();
});
>
app.use((req, res, next) => {
  console.log('세번째 미들웨어');
  res.json({ message: 'Hi' });
});
>
app.use((req, res, next) => {
  console.log('네번째 미들웨어');
  res.json({ message: '마지막 미들웨어 입니다.' });
});
>
app.listen(PORT, () => {
  console.log(PORT, '포트로 서버가 열렸어요!');
});

위와 같은 코드일 때 결과는 어떻게 나올까? 코드는 위에서 부터 아래로 차례대로 흐른다.

app.use((req, res, next) => {
  console.log('첫번째 미들웨어');
  next();
});

우선 첫번째로 만나는 코드는 위와 같다. 콘솔에 '첫번째 미들웨어'가 찍히고, next()를 만나 다음 미들웨어로 간다.

app.use((req, res, next) => {
  console.log('두번째 미들웨어');
  next();
});

그 밑에 있는 코드인 위와 같은 코드로 흘러가고 콘솔에 '두번째 미들웨어'가 찍히고, next()를 만나 다음 미들웨어로 간다.

app.get('/', (req, res, next) => {
  console.log('GET / 요청이 발생했습니다.');
  next();
});

그 다음으로 만나는 코드는 위와 같다. /의 주소로 get요청이 발생했다고 뜨기 때문에 이 코드가 실행되고, next()를 만나 다음 미들웨어로 간다.

app.use((req, res, next) => {
  console.log('세번째 미들웨어');
  res.json({ message: 'Hi' });
});

그 밑에 있는 코드인 위와 같은 코드로 흘러가고 콘솔에 '세번째 미들웨어'가 찍히고, next()가 없기때문에 다음 미들웨어로 흘러가지 않고 코드가 여기서 중단된다.

그렇게 코드를 실행하면 아래와 같다.

RESTful

우선 REST에 대해서 알아보자.
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미

REST의 구성요소로는 자원(Resource), 행위(Verb), 표현(Representation of Resource)이 있다.

RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다. RESTful의 목적은 이해하기 쉽고, 사용하기 쉬운 REST API를 만드는 것이라고 할 수 있다.

참고:
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://hahahoho5915.tistory.com/54


소감

주특기 2주차를 마치고...
lv1 과제를 할 때는 noSQL 인 mongoDB와 함께 express를 사용했었다. 그때는 이제 노드 입문주차여서 무슨말인지도 몰랐고, 자꾸 예전에 배웠던 flask 악몽이 자꾸 떠올라서 제대로 숙지를 하지 못하고 과제를 시작했다. 그렇게 일단 lv1 과제를 제출했고, SQL인 MySQL과 연관해서 배우니 이제 뭔가 틀이 잡히는는 느낌이 들었다. 아직 모르는게 많지만, 특정 HTTP Method마다 작성하는 틀이 잡혀있고, 그 안에서 복작복작하면 된다는걸 알았다.
페어를 진행하면서 내가 논리적으로 풀지 못했던거나 오류가 발생했을때 다같이 보고 해결하는 것에 짜릿함을 느꼈고, 뭔가 성장하는 기분이 들었다.

profile
시간이 걸릴 뿐 내가 못할 건 없다.

0개의 댓글