DevOps BootCamp/Section 1 실습과제

Progect1 회고

cloudmaster 2023. 4. 5. 14:08

Project 01

 - 이번 프로젝트로 서버를 처음 만들어 봤는데 오류가 많이 났던 거 같습니다.

 

- 하지만 팀원들과 상의하면서 조금씩 수정해 나갔고 요구 기능들을 구현해 낼 수 있었습니다.

 

 - 저희 팀은 각자 구현해 보고 나중에 코드를 합치는 방식으로 진행하였습니다. 

 

ERD 작성

 - 주제는 수업 LMS(학습 관리 시스템)의 서버를 구성하는 것이었습니다.

 

 - 테이블을 users, registration, classes로 나누었으며, users는 시스템 사용자, registration은 수강 신청, classes는 수업을 의미합니다.

 

- users에서 userId와 role을 기본키, classes에서는 classId를 기본키, registration에서 userId와 classId를 참조키로 설정했습니다.

 

 

  API 문서 작성

 - API 문서에 서버에 기본적으로 들어가야 되는 method, path, request header, request body 등을 적었습니다.

 

 - 위의 과정을 수행하면서 여러 번 수정을 반복했었고, 대부분의 기능들이 제대로 작동되었습니다.

 

 

오류

 

- 인증 토큰 오류

 

- 수강 신청(registration) 기능,  users 테이블에 email을 추가하는 기능을 구현하는 데 있어서 인증 토큰을 써야 했습니다.

 

- 하지만 인증 토큰을 사용하는데 오류가 났습니다

 

- 위처럼 코드를 만들어 봤지만, 여전히 403 오류가 떴습니다.

 

- 그래서 해결하기 위해 여러 블로그, gpt 등을 검색해 봤지만 여전히 해결하지 못했습니다.

 

 

● 오류 예상 이유

 

1. tokenValidator에 토큰값을 설정하지 않아서 발생하는 것 같습니다.

const token = request로 부터 확인한 토큰데이터
if (token === "bbb") {
   const userId = 2 //토큰 bbb는 유저2의 데이터를 가지고 있다고 가정
} else if (token === "aaa") {
  const userId = 1 //토큰 aaa는 유저1의 데이터를 가지고 있다고 가정
}

.

 ※ 위 내용은 tokenValidator라는 함수를 정의하여 token값을 받으며, token이 유효한지를 확인하는 것 목적입니다. 

 ※ 토큰은 인증(authentication)을 위해 사용되며, 토큰이 유효하지 않다면 해당 사용자의 요청을 거부하거나, 다른 조치를 취할 수 있습니다.

 

2. request.header에 대한 정보가 없어서 authorization에 값을 넣어 주지 못하는 것 같습니다.

 

● 오류 해결

1. 토큰을 불러 오려고 사용했던 

  const { authorization } = request.headers 명령어 > headers의 데이터를 모두 불러왔었기 때문에 오류가 났었던 것이었습니다.

 

2. > request.headers.authorization 명령어를 사용하여 headers 안에 특정값을 가지고 오도록 특정하였고, console.log를 해서 'bearar 1값이 들어 있음을 확인했습니다. 

  > 문자열 이기 때문에 split(' ' ) 함수를 이용해 공백을 기준으로 문자열을 잘라서 substring 변수에 저장하였습니다.

 

3. 마지막으로 token 변수 > 문자열을 잘라서 substring 배열에 1번쨰 값을 가져오도록 substring[1]을 사용하였습니다.

 

 > 다음은 설명한 코드를 차례로 실행했을 때 나오는 값입니다.

 

 

 

프로젝트 후기

 처음 주제가 주어 졌을 때, 서버를 한 번도 개발한 경험이 없어서 어디서부터 어떻게 시작해야 할지 몰랐습니다. 하지만  유어클래스, 블로그, 팀원, 엔지니어 분들의 도움으로 어느 정도 구조가 잡혔고, 코드가 무엇을 뜻하는지 이해하게 되었습니다.

 서버가 어떤 형식으로 돌아 가는지 구조를 배울 수 있어서 좋았으며, 다시 하면 여러 조건들이 바뀌어 힘들겠지만, 좀 더 수월하게 만들 수 있을 것 같습니다.

'DevOps BootCamp > Section 1 실습과제' 카테고리의 다른 글

데이터베이스 설계  (0) 2023.04.03