Chapter 5. API 및 프로젝트 설정 기초

Arin·2025년 12월 26일

UMC 8기 - Node.js

목록 보기
7/11

실습 인증

  1. github 라벨 생성

  2. github 이슈 생성

  3. 생성한 이슈에 branch 생성

    git fetch origin
    git checkout feature/create-article-api
  4. .gitignore 설정

  5. .env 설정

    // .env
    PORT=3030
    // src/index.js
    import dotenv from "dotenv"
    dotenv.config(); // .env파일을 읽어와서 process.env에 저장
    const port = process.env.PORT;
    
    console.log("현재 포트:", process.env.PORT);
  6. db 연결

    // .env
    DB_HOST=localhost
    DB_PORT=3306
    DB_USER=root
    DB_PASSWORD=mysql3143
    DB_NAME=mission_db
    // src/db.config.js
    import mysql from "mysql2/promise";
    import dotenv from "dotenv";
    
    dotenv.config();
    
    export const pool = mysql.createPool({
      host: process.env.DB_HOST || "localhost", // mysql의 hostname
      user: process.env.DB_USER || "root", // user 이름
      port: process.env.DB_PORT || 3306, // 포트 번호
      database: process.env.DB_NAME || "mission_db", // 데이터베이스 이름
      password: process.env.DB_PASSWORD || "mysql3143", // 비밀번호
      waitForConnections: true,
      // Pool에 획득할 수 있는 connection이 없을 때,
      // true면 요청을 queue에 넣고 connection을 사용할 수 있게 되면 요청을 실행하며, false이면 즉시 오류를 내보내고 다시 요청
      connectionLimit: 10, // 몇 개의 커넥션을 가지게끔 할 것인지
      queueLimit: 0, // getConnection에서 오류가 발생하기 전에 Pool에 대기할 요청의 개수 한도
    });
    
    		```
  7. /api/user요청 데이터

    {
        "name": "이름",
        "gender": "여성/남성",
        "age": "23",
        "birth": "20030315",
        "address": "주소",
        "specAddress": "세부주소",
        "email": "이메일",
        "categories": ["도시락", "고기"]
    }
  8. DTO 구현 (responseFromUser )

    export const responseFromUser = ({ member, preferences }) => {
      return {
        id: member.id,
        email: member.email,
        name: member.name,
        gender: member.gender,
        age: member.age,
        address: member.address,
        specAddress: member.spec_address,
        phoneNumber: member.phone_num,
        preferences: preferences.map(p => p.category_id)
      };
    };
  9. API test(/api/user)

미션 인증

Issue: 5주차 mission
branch: feature/chapter-05

1. 특정 지역에 가게 추가하기 API

  • post 요청
  • store 테이블, region테이블
  • 이미 저장되어있는 지역에 해당하는 가게를 추가
  • 프론트가 regionId를 넘겨주면 백이 해당 id에 해당하는 지역에 가게 추가
    // request body 
    {
        "regionId": 1,
        "name": "마포곱창",
        "address": "서울시 마포구 합정동 123",
        "score": 4.5
    }
  • 검증 사항
    • 요청된 regionId가 region 테이블의 id에 포함되어있는 숫자인지
  • 검증사항을 통과했으면
    • store테이블에 요청 데이터 저장
    • store테이블에 저장된 데이터들을 사용자에게 반환


2. 가게에 리뷰 추가하기 API

  • post 요청
  • review 테이블, review_image테이블

3. 가게의 미션을 도전 중인 미션에 추가(미션 도전하기) API

  • post 요청
  • member_mission 테이블
    <이미 도전 중인 미션>

    <이미 완료된 미션>

    <새로 도전하는 미션>

0개의 댓글