[2024.05.17 TIL] 내일배움캠프 23일차 (리드미 작성, 기술 질문, 과제 제출)

My_Code·2024년 5월 17일
0

TIL

목록 보기
29/112
post-thumbnail

본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.


💻 TIL(Today I Learned)

📌 Today I Done

✏️ 리드미(Readme) 작성


✏️ 기술 질문 작성

  • API 명세서를 작성해야 되는 이유는 무엇인가요?
    설계 단계에서 구현해야 할 내용을 미리 파악하고 스키마 설계를 할 때 실수를 최대한 줄이기 위한 수단이기 때문이다.

  • 패키지 설치 시 package.json 파일의 dependencies에 추가되는 것과 devDependencies에 추가되는 것의 차이점은 무엇인가요?
    dependencies는 프로그램이 돌아갈 때 필요한 패키지를 넣고, devDependencies에는 주로 개발할 때 사용하는 패키지를 넣는다. 이렇게 두 개로 나눔으로서 배포 시 프로그램을 빌드하는 시간을 줄일 수 있다.

  • MongoDB의 Schema는 무엇인가요? 그리고 Model은 또 무엇인가요?
    MongoDB의 Schema는 데이터베이스에 어떤 데이터가 들어가야 하고, 어떤 데이터 타입을 사용할 지 정의하는 일종의 문서라고 생각한다. Model은 데이터베이스의 데이터를 CRUD할 때 사용되는 데이터의 구조로, MongoDB에서 사용할 수 있는 메서드를 지원한다.

  • 대표적인 Http Method는 무엇이며, 각각은 언제 사용하나요?
    GET : 특정 혹은 전체 데이터를 읽어오는 API 연결에 주로 사용
    POST : 데이터를 서버에 등록하는 API 연결에 주로 사용 (또는 애매한 라우터에 사용)
    PUT : 특정 데이터의 전체를 수정하는 API 연결에 주로 사용
    PATCH : 특정 데이터의 일부를 수정하는 API 연결에 주로 사용
    DELETE : 특정 데이터를 삭제하는 API 연결에 주로 사용

  • 수정할 때 사용할 수 있는 HTTP Method는 PUT과 PATCH가 있는데, 어떤 차이점이 있나요?
    PUT은 데이터의 전체를 수정할 때 사용되고 PATCH는 데이터의 일부 요소만 수정할 때 주로 사용된다.
    데이터의 일부 요소만 변경하는 API에서 PUT을 사용하면 변경하는 일부 데이터는 수정이 되지만 나머지 요소들은 빈 값이 들어가게 된다.

  • 대표적인 Http Status Code는 무엇이며, 각각은 언제 사용하나요?
    200 : 요청이 성공했을 때 (OK)
    201 : 요청이 성공 되었고, 새로운 데이터가 생성되었을 때 (Created)
    400 : 클라이언트의 입력이 잘못 되었을 때 (Bad Request)
    401 : 미승인된 요청일 때 (Unauthorized)
    404 : 잘못된 URL 요청일 때 (Not Found)
    500 : 서버에 문제가 생겼을 때 (Internal Server Error)
    501 : 서버에서 해당 기능을 지원하지 않을 때 (Not Implemented)

  • API 호출 시 데이터를 넘기는 방식 3가지는 무엇이며, 각각은 언제 사용하나요?
    Body : 회원가입, 로그인, 게시글 등록 등과 같은 데이터의 양이 많고 복잡할 때 주로 사용
    Query : 요청의 크기가 작아서 빠르게 실행할 수 있는 검색 기능과 같은 곳에서 주로 사용
    Params : URL에 간단한 ID값을 넘겨 데이터를 조회하는 곳에서 주로 사용

  • API 설계 시 RESTful하게 설계한다는 것은 무엇인가요?
    RESTful하게 설계한다는 것은 쉽게 말하면 REST API 주소 체계를 이용한 서버를 설계한다는 의미이다.
    REST API는 일종의 주소를 정하는 규칙으로, 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법이다.

  • 비밀번호 저장 시 평문으로 저장하면 DB 유출 시 문제가 됩니다. 어떻게 저장해야 안전하게 저장할 수 있을까요?
    비밀번호를 암호화(해싱)해서 데이터베이스에 저장해야 합니다. Node.js에서는 Bcrypt라는 라이브러리를 사용해서 입력받은 비밀번호를 해시 키와 해시 알고리즘을 통해서 암호화 후 데이터베이스에 저장하고 다시 비밀번호를 가져올 때는 암호화할 때 사용한 해시 키와 해시 알고리즘을 통해서 복호화한다.

  • 미들웨어를 사용하는 이유와 에러 처리 이 외에 어떤 용도로 사용할 수 있을까요?
    미들웨어를 통해서 중복으로 사용되는 알고리즘을 사용해서 코드의 가독성을 높일 수도 있고, 이를 통해 프로그램을 조금 더 효율적으로 실행되게 할 수 있다. 이번에는 에러 처리에 주로 사용되었지만, 사용자 인가 처리와 같은 인증하는 미들웨어에도 사용이 가능할 것 같다.



📌 Tomorrow's Goal

✏️ 노드 숙련 강의 시청하기

  • 다음주에는 예비군 때문에 오전과 오후에 시간이 없음

  • 그래서 조금이라도 주말에 들어야 함

  • 그래도 다행인 점은 이번에는 강의 발제와 개인 과제 발제가 동시에 진행되지 않는 점임



📌 Today's Goal I Done

✔️ 리드미(Readme) 작성

  • 오전에 리드미(Readme) 작성을 진행함

  • 그래도 어제 TIL 작성한 내용이 거의 리드미(Readme)에 들어갈 내용이라서 빠르게 작성함

  • 다음에는 API 명세서를 직접 만들어 보는 것을 목표로 해야겠음


✔️ 기술 질문 작성

  • 기술 질문이 정말 면접에서 물어볼만한 내용들이라서 좋았음

  • 몇 가지는 바로 떠오르지 않아서 결국 검색해서 내용을 작성했음

  • 이렇게 매번 과제때 중요한 기술 질문들을 알려주면 좋을 것 같음

  • 모아서 보면 생각보다 면접에 많은 도움이 될 것 같음



⚠️ 구현 시 발생한 문제

✔️ 리눅스 서버에서 .env를 인식 못하는 에러 발생

.
├── node_modules 
├── src
│   ├── middlewarmies
│   │   └── error-handler.middleware.js
│   ├── routers
│   │   └── products.router.js
│   ├── schemas
│   │   ├── index.js
│   │   └── product.schema.js
│   └── app.js
├── .env 
├── .gitignore
├── .prettierrc
├── package.json
├── README.md
└── yarn.lock 
  • 위와 같은 폴더 구조 가이드 라인을 따랐음

  • 하지만 /schemas/index.js에서 .env에 있는 몽고DB의 URI를 인식하지 못함

  • 그래서 혹시나해서 .env를 src 디렉터리에 넣으니 정상 동작함...

  • 찾아보니 import 'dotenv/config'에서 .env의 경로를 명시적으로 설정할 수 없다고 함

  • 그래서 따로 분리해서 사용해야 한다고 함

// dotenv.config.js
import dotenv from 'dotenv';
dotenv.config({ path: './src/.env' });
// /constants/env.constant.js
import './dotenv.config.js';

export const SERVER_PORT = process.env.PORT;
export const MONGO_URI = process.env.MONGO_URI;
export const MONGO_NAME = process.env.MONGO_NAME;
profile
조금씩 정리하자!!!

0개의 댓글