app.use app.listen 인증미들웨어 참 어렵다~

shockwave·2024년 9월 23일

TIL

목록 보기
30/49

많이도 걸렸다.
개인과제 제출기한을 열흘이나 훌쩍 넘겨버린 시점에 겨우겨우 데드라인에 맞춰 제출을 끝내게 되었다.
사실, 개념적인 부분도 많이 미흡했고 코드 사용이 너무 익혀지지가 않아서 머리박치기로 몇날 며칠을 같은 코드를 쳐보면서 이게 왜 이렇게 될까? 하는 고민만 많았다.
시간이 지날수록 배워야 할 것들은 점점 그 난이도가 올라가는데
따라가지 못 할 때 드는 심정은 참 답답하다.
그런데도 포기하기는 싫어서 거북이가 토끼 따라가듯 머리에 뭐가 안 들어온다 싶으면 물 한 잔 마시고 다시 의자에 앉아서 쳐다보길 반복했다.
부트캠프 특성상 빠르게 치고 나가면서 정신줄 붙잡고 정신없이 달리는 뭔소린지 알아들을 수도 없는 그 기이한 마라톤을 지속하면서 성장해야하는데
나는 지금 정체되어있다고 생각했다.
그래도 일단 아주 최소한의 기능을 구현한 API를 만들긴 했으니까 정리는 해보려고 한다.


API를 사용하기 위해서는 express 애플리케이션을 생성해야한다.

const app = express();

애플리케이션의 사용을 자유자재로 다루기위해 app이라는 상수로 미들웨어를 사용하게 된다.

  • 이제 app.listen으로 포트를 열고 접속된 서버와 요청/응답처리를 수행하게된다.
  • app.use(express.json());
    Express 애플리케이션에서 JSON 형태로 요청하는 body를 파싱하기 위해 사용되는 미들웨어이다.
  • app.use("/api", [ ~router, ]);
    접속이 가능한 로컬호스트 또는 접근이 쉬운 퍼블릭 ip등의 주소와 포트번호에 더해 해당 '/api' URL을 붙여 접속하면 usersRouter와 itemRouter를 각각 사용하겠다는 것이다.

이제 usersRouter를 사용하는 해당 파일로 들어가서

express를 이용하여 라우터를 사용하려면 라우터를 사용하는 객체를 받는다.

이 때 express.Router()를 사용하면 객체를 반환하는데 이걸 변수에 저장해서 router 객체를 통해 API 기능을 구현하게 된다.

patch 메서드의 경우 값을 변경하는데 주로 사용한다.
캐시 구매하는 기능을 사용할 때 우리가 상위 파일에서 선언한 app.use에 인자로 받아놓은 /api를 통해 이제 router.메서드를 사용해 url을 또 입력해 api기능들을 구분하기 시작한다.
/api/Cash로 접근하면 캐시구매에 관련된 기능이 수행되는것이고
authMiddleware라는 미들웨어함수(다른 파일에 써놓은 인증미들웨어 함수, ES6 문법에 따라 import하여 usersRouter를 사용하는 파일 안에서 사용할 수 있게 했다.)를 통해 인증(Access 토큰을 통해 인증절차를 실시했다.)이 끝나면 요청 / 응답 / next로 이어지는 미들웨어기능을 실행하게 된다.


코드를 다 써가면서 정리하기엔 난잡하니 짧게 마무리한다.

api를 사용하기위해 미들웨어를 어느 흐름으로 알게되느냐가 중요했던 것 같다.

try {}catch(error){} 를 통해 try 문에서 기능을 실행하고
에러가 잡히면

res.status(500).json( {message: '알 수 없는 에러 발생' } );

이와 같이 http 상태코드와 함께 메시지를 출력해 응답해주도록 설정하는 법을 알게 됐다.

또한, 요청(request)와 응답(response) 간의 흐름을 이해하고 때로는 요청 또는 응답하는 곳의 body 또는 parameter를 이용해 전송되는 데이터를 가져와 값을 비교하거나 수정 또는 생성도 할 수 있도록 하는 법을 알 수 있었고 나아가 prisma라는 orm을 활용한 mySQL 사용법에 익숙해질 수 있었다.

profile
생각을 많이. 입은 무겁게. 심장은 항상 열심히 뛰는 사람이 되자.

0개의 댓글