FE RYAN
완벽하지 않으면 어때
FE RYAN
전체 방문자
오늘
어제

블로그 메뉴

  • 💾 깃허브 링크
  • 홈
  • 태그
  • 분류 전체보기 (151)
    • 개인프로젝트 (8)
      • 개인 포트폴리오 웹앱 (6)
      • 프론트엔드 기술면접 아카이빙 웹앱 (2)
    • 기록 (121)
      • 원티드 프리온보딩 인턴십 (0)
      • 코드스테이츠 프론트엔드 (75)
      • 생각들 (3)
      • Today I learned (32)
      • 회고 (9)
      • 리뷰 (1)
    • 개발 (17)
      • React (3)
      • Javascript (7)
      • CSS (1)
      • HTML (3)
      • HTTP (1)
      • 자료구조 (0)
      • 알고리즘 (2)
    • 코딩테스트 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • 디자인 (1)
      • UI & UX (1)
    • 수학 (0)
    • 자기계발 (0)

공지사항

인기 글

태그

  • 코드스테이츠
  • 자바스크립트
  • 신입개발자
  • 회고
  • HTML
  • 부트캠프
  • 포트폴리오
  • 메인프로젝트
  • seb 39
  • 딥다이브
  • ES6
  • Til
  • 프론트엔드
  • seb39
  • 자바스크립트 딥다이브
  • 리액트
  • 원시타입
  • css
  • 타입스크립트
  • useMemo

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN

완벽하지 않으면 어때

기록/코드스테이츠 프론트엔드

8주차 주말 - express로 api 서버 만들기

2022. 6. 20. 18:09
728x90

8주차 주말 - express로 api 서버 만들기

1. 배운 것

  • req.query
  • req.params

2. 내용 정리

2.1 req.params로 분기하기

// 1. 객체 디스트럭쳐링 할당 사용 예시
app.get('/api/users/:type', async (req, res) => {

  let { type } = req.params;

  if (type === 'seoul') {
    let data = [
      { name: '김철수', city: 'seoul' },
      { name: '이철수', city: 'seoul' },
    ];
    res.send(data);

  } else if (type === 'jeju') {
    let data = [
      { name: '이동근', city: 'jeju' },
      { name: '박동근', city: 'jeju' },
    ];
    res.send(data);

  } else {
    res.send('없는 경로입니다.');
  }
});

// 2. 객체 디스트럭쳐링 할당 미사용 예시
app.get('/api/sales/:year', async (req, res) => {
  if (req.params.year === '2021') {
    let data = [
      { product: 'car', amount: 204020 },
      { product: 'notebook', amount: 12520 },
    ];
    res.send(data);
  } else if (req.params.year === '2022') {
    let data = [
      { product: 'car', amount: 432520 },
      { product: 'notebook', amount: 7689520 },
    ];
    res.send(data);
  } else {
    res.send('해당 연도의 매출 정보가 없습니다.');
  }
});

uuid-apikey 로 api 키 생성하고 값 이용하기

const uuidAPIKey = require('uuid-apikey');
// console.log(uuidAPIKey.create());

const key = {
  apiKey: 'Y5VW9EX-WXFMMAE-PMX670A-RYM2PS1',
  uuid: 'f177c4bb-e75f-4a29-b53a-6381c7a82b64',
};

app.get('/api/users/:apikey/:type', async (req, res) => {
  let { apikey, type } = req.params;
  if (!uuidAPIKey.isAPIKey(apikey) || !uuidAPIKey.check(apikey, key.uuid)) {
    res.send('올바르지 않은 api 키 입니다.');
  } else {
    if (type === 'seoul') {
      let data = [
        { name: '김철수', city: 'seoul' },
        { name: '이철수', city: 'seoul' },
      ];
      res.send(data);
    } else if (type === 'jeju') {
      let data = [
        { name: '이동근', city: 'jeju' },
        { name: '박동근', city: 'jeju' },
      ];
      res.send(data);
    } else {
      res.send('해당 도시의 사용자 정보가 없습니다.');
    }
  }
});

app.get('/api/sales/:apikey/:year', async (req, res) => {
  let { apikey, year } = req.params;
  if (!uuidAPIKey.isAPIKey(apikey) || !uuidAPIKey.check(apikey, key.uuid)) {
    res.send('올바르지 않은 api 키 입니다.');
  } else {
    if (year === '2021') {
      let data = [
        { product: 'car', amount: 204020 },
        { product: 'notebook', amount: 12520 },
      ];
      res.send(data);
    } else if (year === '2022') {
      let data = [
        { product: 'car', amount: 432520 },
        { product: 'notebook', amount: 7689520 },
      ];
      res.send(data);
    } else {
      res.send('해당 연도의 매출 정보가 없습니다.');
    }
  }
});

참고 자료

  • 개발자의 품격 님 유튜브 강의 Node.js에서 API 서버 만들기

3. 리뷰

3.1 좋았던 점

3.2 아쉬웠던 점

3.3 notes

4. 할 일

  • [ ] 데일리코딩 ~20
  • [ ] 과제
  • [ ] 딥다이브 17장 정리
  • [ ] 노드교과서 6장 정리
  • [ ] 토이프로젝트 - 리액트, express 복습
  • [ ] dp 이론정리
728x90
저작자표시 비영리 변경금지

'기록 > 코드스테이츠 프론트엔드' 카테고리의 다른 글

9주 3일차 - 섹션2 회고, 재귀, dp  (2) 2022.06.22
9주 1일차 - state airline server  (1) 2022.06.20
8주 5일차 - Refactor Express  (0) 2022.06.17
8주 4일차 - CORS, express  (0) 2022.06.16
8주 3일차 - StatesAirline Client  (2) 2022.06.16
    '기록/코드스테이츠 프론트엔드' 카테고리의 다른 글
    • 9주 3일차 - 섹션2 회고, 재귀, dp
    • 9주 1일차 - state airline server
    • 8주 5일차 - Refactor Express
    • 8주 4일차 - CORS, express
    FE RYAN
    FE RYAN

    티스토리툴바