Node Js 복습 (2)

dosiri_·2021년 9월 9일
0

복습

목록 보기
2/14
post-thumbnail
post-custom-banner

09.09

1. URI

  • 주소에 자원을 식별할 수 있는 문자열 포함
  • 직관적이고 명사 위주로 작성
  • 정답은 없지만 항상 일관된 규칙으로 작성이 중요!

2. API

리소스에 대한 엑세스 권한을 제공하고 보안과 제어를 유지
구현방식을 알지 못해도 서비스가 서로 통신 가능

3. HTTP

  • local storage 나 cookies 에 정보 저장 (웹에 저장)
    -> 상대적으로 보안에 취약함
  • session storage 에 저장
    -> 보안적으로 더 뛰어남

4. API 명세

  • API 이름, method, content-type, url, req header/body, res header/body
  • 문서 작성 툴로 swagger 많이 사용

5. 모듈 내 모듈 실습

/devices인 라우터와
/divices/categories 인 라우터
중복되는 라우터 모두 모듈화 시켜주기 위해
devices 폴더 생성 그리고 그 밑에 categories 폴더 생성후 한번더 묶어주기

    const express = require("express");
    const router = express.Router();
     // categories 라우터를 호출
    const categoriesRouter = require("./categories/index");
    devicesArr = [];
    < 기기정보 업로드 >
    router.post("/", (req, res) => {
      const { name, version, price } = req.body;
    //필수입력란 만들기
    if (!name && !version && !price)
      return { message: "데이터 값을 확인해주세요" };
    const devicesIdx = devicesArr.findIndex((item) => {
      return item.name === name;
    });
    if (devicesIdx === -1) {
      devicesArr.push({ name, version, price });
      res.status(200).json({
        message: "기기정보 추가가 완료 되었습니다.",
      });
    } else {
      res.status(400).json({
        message: "중복된 기기가 존재합니다.",
      });
    }
    });
    < 전체 조회 >
    router.get("/", (req, res) => {
      if (devicesArr.length === 0) {
        res.status(401).json({
          message: "기기정보가 없습니다.",
        });
      } else {
        res.status(200).json({
          data: devicesArr,
        });
      }
    });
    < 특정 기기 정보 조회 >
    router.get("/:idx", (req, res) => {
    //인덱스 값 확인하기
    const { idx } = req.params;
    const devicesIdx = devicesArr.findIndex((item) => item.name === idx);
    if (idx < 0 || idx >= devicesArr.length)
      return res.status(409).json({
        message: "인덱스 에러",
      });
    if (devicesIdx === -1) {
      res.status(401).json({
        message: "기기 정보가 존재하지 않습니다.",
      });
    } else {
      const result = devicesArr[devicesIdx];
      res.status(200).json({
        message: "기기 정보 조회 완료.",
        //   data: { idx, version, price },
        data: devicesArr[idx],
      });
    }
 });
  < 기기 정보 수정 >
    router.put("/:idx", (req, res) => {
      const { idx } = req.params;
      const { name, version, price } = req.body;
    if (devicesArr[idx]) {
      devicesArr[idx] = { name, version, price };
      res.status(200).json({
        message: "기기정보 수정이 완료 되었습니다.",
        data: devicesArr[idx],
      });
      } else {
      res.status(400).json({
        message: "기기정보가 존재하지 않습니다.",
      });
      }
    });
   < 기기정보 삭제 >
    router.delete("/:idx", (req, res) => {
      const { idx } = req.params;
    if (devicesArr[idx]) {
      devicesArr.splice(idx, 1);
      res.status(200).json({
        message: "기기 삭제가 완료되었습니다.",
      });
    } else {
      res.status(400).json({
        message: "기기정보가 존재하지 않습니다.",
      });
    }
    });
   //categories
   router.use("/categories", categoriesRouter);
    module.exports = router;

코드 로직은 어제랑 거의 동일하다.
이후 categories폴더 내에 새로운 라우터를 만들어 exprots 해주면 끝

6. AWS 서버 생성

서버 생성을 위하여 AWS 를 사용했다.

하드웨어 서버는 비싸고, 서버 수요를 예측하기 힘들 때 기업들이 투자를 유보하면서 많이 사용한다고 들었다.

Amajon 에서 ubuntu 서버를 대여하는 개념

먼저 가입하는데 visa 카드가없어서 엄카로 대체.

강사님이 aws 잘 못쓰면 과금폭탄 맞는다고 하셨으니 항상 확인해봐야함!

순서가 매우 복잡하고 도중에 오류도 몇 번씩이나 발생해서 너무 어지러웠다ㅠ

사실 지금 적는 순서가 정확한지 모르겠지만 일단 기억나는 대로 써보면

1) AWS 회원가입

2) EC2 서비스 시작

3) 인스턴스 시작 후 키페어 받기 - unbuntu 사용

4) 탄력적 IP 받기 - 특정한 IP주소로 접근하기 위해

-여기서부터 너무 어지러워~

5)
- window 사용자라 putty 설치
- putty.gen 으로 aws 키페어를 가져와서 저장
- putty 실행 후 ubuntu로 로그인

6) filezilla 를 이용해서 VScode에서 작성한 파일을 ubuntu 폴더로 이동

7) 터미널에서 환경 설정

              sudo apt-get update
              sudo apt-get install nodejs
              sudo apt-get install npm
   sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j 
   REDIRECT--to-port 3000  ( 3000번 포트도 url에 따로 적지않고 연결하도록!)

이후 npm run start
   

8) PC를 계속 켜놓고 서버를 유지하는 것은 어려우니까 서버 운영을 지속적으로
하기 위해서 pm2 설치

            sudo npm install -g pm2
            pm2 --version ( 버전 확인  )
            pm2 start ./bin/www
            
            
   < 사용 기초 >          
    - 시작 : pm2 start ./bin/www
    - 중지 : pm2 stop 0
    - 재시작 : pm2 restart www
    - 끄기 : pm2 delete www
    - 로그 확인 : pm2 logs www

  - ubuntu 편집기 사용 - vi
    - ex) vi package.json으로 들어감
    - esc를 누르고 i ==> insert
    - 수정 후 esc 누르면 다시 복귀 -> :wq 누르면 저장하고 나가기
 

9) Public DNS로 접근하면 화면에 Express 가 딱!

 
post-custom-banner

0개의 댓글