ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 06/10 node.js express를 사용한 rest api 연습
    게임 웹 프로그래밍/node.js 2021. 6. 10. 14:18

    npm init -y

    npm i express uuid nodemon

     

    visual studio code

    코드 정리 툴

    prettier

    파일 > 기본설정 > 설정

    save검색

    Formate On Save 체크설정

     

    라우터

    const userRouter = require("./routes/users");

    app.use('/users', userRouter);

     

    서버 할일

    id를 생성

    객체로 만들어서 배열에 추가

    password 암호화 할수 있음 하기

    npm crypto검색

    jwttoken

     

    응답시

    status 200

    오류시 500

     

    app.js

    const express = require("express");
    const userRouter = require("./routes/users");
    const app = express();
    const port = 3000;
    
    app.use(express.json());
    app.use('/users', userRouter);
    
    app.listen(port, () => {});

    users.js

    const express = require("express");
    const router = express.Router();
    const { v4: uuidv4 } = require("uuid");
    const CryptoJS = require("crypto-js");
    
    let users = [];
    
    router.get("/all", (req, res, next) => {
      res.send({status : 200, result : users});
    });
    
    router.get("/:id", (req, res, next) => {
      const id = req.params.id;
      let user = users.find(x => x.id === id);
      let result = {
        status: 200,
        user,
      };
      if (user === undefined) {
        result.status = 500;
      }
      res.send(result);
    });
    
    router.post("/", (req, res, next) => {
      let user = req.body;
      let ciphertext = CryptoJS.AES.encrypt(req.body.password, 'secret key 123').toString();
      user.password = ciphertext;
      const uuid = uuidv4();
      user.id = uuid;
      users.push(user);
      console.log(users);
    
      let result = {
        status: 200,
      };
    
      res.send(result);
    });
    
    router.post("/auth", (req, res, next) => {
        let user = req.body;
        let result = {
            status: 500,
          };
        let userFind = users.find(x => x.id === user.id);
        if(user != undefined)
        {
            var bytes  = CryptoJS.AES.decrypt(userFind.password, 'secret key 123');
            var originalText = bytes.toString(CryptoJS.enc.Utf8);
            console.log(originalText);
            console.log(user.password);
            if(originalText == req.body.password){
                result.status = 200;
            }
        }
        
      res.send(result);
    });
    
    router.delete("/", (req, res) => {
        let user = req.body;
        let result = {
            status: 500,
          };
        let userFind = users.find(x => x.id === user.id);
        if(user != undefined)
        {
            var bytes  = CryptoJS.AES.decrypt(userFind.password, 'secret key 123');
            var originalText = bytes.toString(CryptoJS.enc.Utf8);
            if(originalText == req.body.password){
                let target = users.indexOf(userFind);
                users.splice(target);
                result.status = 200;
            }
        }
        
      res.send(result);
    });
    
    router.patch("/", (req, res) => {
        let user = req.body;
        let result = {
            status: 500,
          };
        let userFind = users.find(x => x.id === user.id);
        if(userFind != undefined)
        {
            var bytes  = CryptoJS.AES.decrypt(userFind.password, 'secret key 123');
            var originalText = bytes.toString(CryptoJS.enc.Utf8);
            if(originalText == req.body.password){
                userFind.nickname = user.nickname;
                result.status = 200;
            }
        }
      res.send(result);
    });
    
    module.exports = router;

    '게임 웹 프로그래밍 > node.js' 카테고리의 다른 글

    06/16 node.js 카카오톡 로그인  (0) 2021.06.16
    06/11 node.js 리퀘스트의 params, query확인  (0) 2021.06.11
    06/09 node.js  (0) 2021.06.09
    06/08 node.js  (0) 2021.06.08
    06/04 node.js  (0) 2021.06.04
Designed by Tistory.