ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] 회원가입 기능 만들기
    node.JS 2021. 12. 28. 19:35

     

     

    Client와 Server가 통신하는 방법

    Chrome Browser와 같은 Client 에서 아이디와 비밀번호를 입력하여 서버에 보내준다.

     

    1.Body-parser Dependency 다운

    body-parser 는 node.js 모듈이다. Client POST request data의 body 로부터 parameter를 편리하게 추출할 수 있다.

    npm install body-parser --save

     

     

    2. Register Route 만들기

    const express = require('express');
    const app = express()
    const port = 8080
    //User model 가져오기
    const { User } = require("./models/User")
    //body-parser 가져오기
    const bodyParser = require('body-parser')
    //body-parser 옵션주기 (Server에서 정보를 분석하여 가져올 수 있도록)
    app.use(bodyParser.urlencoded({extended: true})); //application/x-www-form-urlencoded
    app.use(bodyParser.json()); //application/json
    
    //mongoose를 이용하여 어플리케이션과 mongo db 연결
    const mongoose = require('mongoose')
    mongoose.connect('mongodb+srv://HyoJeong:abcde1234@cluster0.qzcc8.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',{
        usenewurlparser: true, useUnifiedTopology: true
    }).then(()=>console.log('MongoDb Connected..'))
      .catch(err=>console.log(err))
    
    app.get('/',(req,res)=> res.send('Hello Hyojeong!'))
    
    //회원가입을 위한 route만들기
    app.post('/register',(req,res) => {
        //Client에서 보내주는 정보들을 DB에 넣어주기
    
    
        const user = new User(req.body) //instance만들기 //req.body 안에는 bodyParser 덕분에 json 형식으로 data가 있다.
        user.save((err,userInfo)=>{
            if(err) return res.json({ success: false, err}) //성공하지 못했을 때 성공하지 못했다고 json 형식으로 전달되고 err message도 함께 전달한다.
            return res.status(200).json({ success: true })  //status(200) : 성공했다는 뜻
        })
    })
    
    app.listen(port, () => console.log(`Example app listening on port ${port}!`))

     

    3. Post Man 다운

    그리고 REST API 테스트용 프로그램인 Post Man 을 설치한다.

     

     

    4. Post Man 을 이용하여 회원가입 해보기

     

     

    send를 누르면

    회원가입에 성공했다. 

     

    출처 : https://www.youtube.com/watch?v=RVhOamEWyGs

    728x90
Designed by Tistory.