Frontend/react

POST method route 생성(body-parser, postman)

dddzr 2022. 6. 22. 00:10

 

1. body-parser

client에서 sever로 보낸

클라이언트 POST request data의 body로부터 파라미터를 편리하게 추출해주는 node.js 모듈

근데 express쓰면 이거 따로 안써도 된다고함.

 

1-1. body-parser이용

npm install body-parser --save
const express = require('express');//express안에 body-parser포함되서 따로 안써도 된다고함
const app = express();
const port = 3000 //아무 포트번호 지정
const bodyParser = require('body-parser');
const { User } = require('./models/User');//모델 들고옴

//bodyParser 옵션
app.use(bodyParser.urlencoded({extended: true}));//application/x-www-form-urlencoded
app.use(bodyParser.json());//application/json

app.post('/register', (req, res) => { //라우터의 endpoint가 register
  //회원가입 할 때 필요한 정보를 client에서 가져와 DB에 넣음

  //모델 가져와서 인스턴스 생성//req.body에 json형태로 데이터 들어있는데 bodyparser에서 파싱해준 것
  const user = new User(req.body);

  user.save((err, userInfo) => { //모델에 저장
    if(err) return res.json({ success: false, err})
    return res.status(200).json({
      success: true
    })
  })
})

1-2. express

app.use(express.urlencoded({extended: true}));//application/x-www-form-urlencoded
app.use(express.json());//application/json

 

2. POSTMAN

현재 클라이언트가 없어서 postman을 사용하여 request 보냄

다른 클라이언트 프로그램 사용해도 상관 x!! 서버 req 테스트 용임

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 20 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

 

서버 켜고

postman에서 데이터 보내보기

 

DB에 들어간 것 확인

Atlas > Veiw Monitoring > Collections

근데 파라미터가 안들어감

데이터 형식을 JSON으로 해줘야함.

 

 

* 처음엔 sucess: true떳는데 두번째부터 11000에러남.

key 중복되서 그렇다고 함(email이 unique)

 

 

*required 속성은 필수 입력값!

const mongoose = require('mongoose');

const userSchema = mongoose.Schema({
    name: {
        type: String,
        maxlength: 50,
        required: true
    },
    email: {
        type: String,
        trim: true,
        unique: 1
    },
    password: {
        type: String,
        minlength: 5,
        required: true
    },
    role: {
        type: Number,
        default: 0
    },
    image: String,
    token: {
        type: String
    },
    tokenExp:{
        type: Number
    }
})

const User = mongoose.model('User', userSchema) //모델이름, 스키마

module.exports = {User} //다른 곳에서도 쓸수 있도록 export

 

'Frontend > react' 카테고리의 다른 글

비밀 정보 보호 (DB 계정 정보 보호)  (0) 2022.06.23
NODE MON  (0) 2022.06.23
Schema / Model  (0) 2022.06.20
몽고DB 연결  (0) 2022.06.20
Node JS / Express JS 설치  (0) 2022.06.16