Unity/서버

210712_ 웹프로그래밍 서버 api 만들기(복습)

minquu 2021. 7. 12. 13:14
반응형

웹 프로그래밍 시험지 한글 파일열기

리소스 / 프로토콜 문서

 

엑셀 파일열어서

 

보기 - 눈금선 없애고

회원관리에서 첫번째 표 복사해서 붙이기 

 

시험지에 맞춰서 수정해주기

 

구매 등록 복사해서 문성에 있느 것 처럼 바꿔주기

 

비쥬얼 코드 켜서

 

exam-10 폴더 만들어주기

 

폴더로 들어가서

 

 

 

init -y 초기화 해주고

 

express 와 노드몬을 깔아준다.

 

 

노드몬, 슈퍼바이저 둘 다 실행이 안되는데

 

npx nodemon app 로 넣으면 실행이 된다.

 

 

 

정상적으로 작동을 함 

 

 

구매 등록 라우터 만들어주기

 

 

app.post('/purchases', (req,res) => {
    console.log(req.body);
    // let result = {
    //     errorcode, errormessage
    // };

    // res.status(200).send();
})

 

 

raw 체크 json 으로 언더 바 눌러서 바꿔주기 

 

 

json 파일 형식으로 post 해주기

 

밑에 나온다. 우리가 send를 안해줘서 포스트맨에서 무한정 돌긴한다.

크게 상관은 없을듯

 

이제 저장될때 시간도 같이 저장 되게 할 것이다.

 

 

moment 를 사용해 줄 것이다 

https://momentjs.com/docs/ 

 

Moment.js | Docs

moment.relativeTimeThreshold(unit); // getter moment.relativeTimeThreshold(unit, limit); // setter duration.humanize has thresholds which define when a unit is considered a minute, an hour and so on. For example, by default more than 45 seconds is consider

momentjs.com

 

 

npm 에서 moment 설치

 

 

 

app.post('/purchases', (req,res) => {
    const {userid, goodsid} = (req.body);
    const now = moment().format('YYYY-MM-DD hh:mm:ss');
    console.log(userid, goodsid, now);
})

코드 추가해주기

 

 

 

모먼트를 넣은 것을 찍어본다.

 

 

여기까지 코드

const express = require('express');
const moment = require('moment');
const app = express();

app.use(express.json());


app.get('/', (req,res) => {
    res.send("<h1> hello </h1>")
})


app.post('/purchases', (req,res) => {
    const {userid, goodsid} = (req.body);
    const now = moment().format('YYYY-MM-DD hh:mm:ss');
    console.log(userid, goodsid, now);
})

app.listen(3030, () => {
    console.log("3030 sever on");

})

 

 

-----

 

DB가 지금은 연결 안되어있으니

서버에서 사용할 배열을 만들어준다.

 

 

배열에 아이템을 푸시해준다.

 

정상적으로 등록 되었다면 

 

res로 200 보내주고 엔드해주기

 

200 떨어짐

 

 

상품이 없는 걸 가정하면 오류 코드 보내야함

 

 

 

상품이 없는 걸 가정했음

 

 

상품 구매 실패 내역 코드 

const express = require('express');
const moment = require('moment');
const app = express();

let arrPurchases = [];

app.use(express.json());


app.get('/', (req,res) => {
    res.send("<h1> hello </h1>")
})


app.post('/purchases', (req,res) => {
    const {userid, goodsid} = (req.body);
    const date = moment().format('YYYY-MM-DD hh:mm:ss');
    console.log(userid, goodsid, date);
    let purchases = {
        userid, goodsid, date
    };

    //구매 실패 (등로된 상품 아이디가 없으면)
    if(goodsid === undefined){
        res.status(500).send({
            errorcode: 31000,
            errormessage: '상품 ID가 없습니다.',
        })
    }else{
        arrPurchases.push(purchases);
        res.status(200).end();
    }
})

app.listen(3030, () => {
    console.log("3030 sever on");

})

 

 

------

 

구매 내역 조회 프로토콜 문서 만들기

 

 

get 방식을 쿼리로 날려서 받는 방식으로 할 것이다.

 

 

 

 

http://localhost:3030/purchases?userid=12343

 

 

 

 

 

 

get 할때 저런 쿼리를 쏘게되면 가져올수 있다. 

 

쿼리를 제대로 받을 수 있는가? 

 

쿼리로 쏜 유저 ID가 배열에 있으면 출력해주고, 아니면 오류 코드를 보내준다.

 

오류 코드 내는 것

 

찾는 것은 filter를 사용할 것이다.

 

app.get('/purchases', (req,res) => {
    console.log(req.query.userid);
    if(req.query.userid === undefined){
        res.status(500).send({
            errorcode: 31000,
            errormessage: '잘못된 사용자 고유번호입니다.',
        })
    }else{
        //배열에서 사용자 ID를 가지고 있는 객체를 배열로 반환한다.
        const results = arrPurchases.filter(p => p.userid === parseInt(req.query.userid));
        console.log(results);
        res.status(200).send({
            results,
        })
    }
})

 

// === 는 값 +타입비교라서 p.userid 는 int // req.query.userid 는 문자열 이라서 오류가 떠서

parseInt() 를 해주었다.

 

post로 먼저 보내고

 

get에서 그 아이디로 쿼리로 쏘면

 

그 찾은 아이디의 오브젝트가 출력 된다

 

 

 

전체 코드

const express = require('express');
const moment = require('moment');
const app = express();

let arrPurchases = [];

app.use(express.json());


app.get('/', (req,res) => {
    res.send("<h1> hello </h1>")
})


app.post('/purchases', (req,res) => {
    const {userid, goodsid} = (req.body);
    const date = moment().format('YYYY-MM-DD hh:mm:ss');
    console.log(userid, goodsid, date);
    let purchases = {
        userid, goodsid, date
    };

    //구매 실패 (등로된 상품 아이디가 없으면)
    if(goodsid === undefined){
        res.status(500).send({
            errorcode: 31000,
            errormessage: '상품 ID가 없습니다.',
        })
    }else{
        arrPurchases.push(purchases);
        res.status(200).end();
    }
})

app.get('/purchases', (req,res) => {
    console.log(req.query.userid);
    if(req.query.userid === undefined){
        res.status(500).send({
            errorcode: 31000,
            errormessage: '잘못된 사용자 고유번호입니다.',
        })
    }else{
        //배열에서 사용자 ID를 가지고 있는 객체를 배열로 반환한다.
        const results = arrPurchases.filter(p => p.userid === parseInt(req.query.userid));
        console.log(results);
        res.status(200).send({
            results,
        })
    }
})


app.listen(3030, () => {
    console.log("3030 sever on");

})
반응형