[Node] BodyParser 와 PostMan 그리고 회원가입 기능

2023. 5. 19. 01:16기술 창고/Node.js

728x90
SMALL

BodyParser는 클라이언트에서 서버로 요청을 보낼 때 해당 요청을 받는 작업을 수행해줍니다.

예를 들어 로그인 화면에서 아이디와 비밀번호를 입력하고 서버로 보내게 되면 그 아이디와 비밀번호가 우선 BodyParser에 담긴다고 볼 수 있습니다.

 

그래서 간단한 회원가입 기능을 만들면서 이 BodyParser 를 사용하기 위해 dependency를 추가하도록 하겠습니다.

또한 구현한 기능을 테스트하기 위한 아주 적합하고 사용도 쉬운 PostMan 까지 설치하여 사용해보겠습니다.

 

 

(1) BodyParser 설치

 

진행하고 있던 프로젝트 툴 (비주얼 스튜디오) 의 터미널에 npm install body-parser --save 명령어를 입력하면 위와 같이 패키지가 설치됩니다.

 

 

 

(2) PostMan 설치

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

 

Download Postman | Get Started for Free

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

www.postman.com

PostMan 사이트에 들어가서 컴퓨터에 맞는 프로그램을 다운받고 설치해주면 됩니다!

아주 간단합니다!

저는 이미 설치가 되어있어서 다시 다운받지는 않겠습니다.

 

 

(3) 간단한 회원가입 기능 구현

 

저번부터 계속 만들고 있었던 boiler-plate 프로젝트의 index.js에서 회원가입 코드들을 작성해줍니다.

 

// 만들었던 User.js 엔티티 모델을 불러온다.
const {User} = require("./models/User");
// BodyParser 를 호출한다.
// BodyParser 는 java랑 비교하자면 RequestBody 어노테이션으로 json 형식의 데이터들을 받아주는 객체라고 생각하면 된다.
const bodyParser = require('body-parser');

// application/x-www-for-urlencoded 형식의 데이터들을 받아서 분석할 수 있도록 옵션을 부여
app.use(bodyParser.urlencoded({extended: true}));
// application/json 형식의 데이터들을 받아서 분석할 수 있도록 옵션 부여
app.use(bodyParser.json());

- const {User} = require("./models/User");  = 기존에 만들었던 User.js 스키마 모델을 require로 가져옵니다.

- const bodyParser = require('body-parser'); = 다운받았던 body-parser 디펜던시를 호출합니다.

위에서 말한 것처럼 클라이언트 요청을 json 형식으로 받아서 전달하기 위해 body-parser 를 호출한 것입니다.

- app.use(bodyParser.urlencoded({extended: true})); = express 로 불러온 3000번 포트의 서버에 bodyparser로 데이터를 받을 때 applcation/x-www-urlencoded 형식의 데이터들을 받을 수 있도록 옵션을 부여한다는 뜻입니다.

- app.use(bodyParser.json()); = application/json 형식의 데이터들을 받을 수 있도록 옵션을 부여합니다.

 

 

app.post('/register', (req, res) => {

  // 회원가입 시 필요한 정보들을 클라이언트에서 가져오면
  // 그것들을 데이터 베이스에 넣어준다.

  // User 엔티티에 요청 body 값을 넣는다.
  const user = new User(req.body)

  // 요청 body 값이 넣어진 user 인스턴스를 저장한다.
  // 저장할 때 에러가 발생되었다면 json 형식의 데이터로 err 메세지를 보낸다.
  // 저장이 성공했으면 json 형식의 데이터로 success true를 반환한다.
  user.save((err, userInfo) => {
    if(err) return res.json({success: false, err})
    return res.status(200).json({ 
      success: true
    })
  })
})

- app.post('/register', (req, res) => { ~ }) = 서버를 요청할 때 post 메소드 방식으로 /register 경로를 통해 요청을 하고 응답을 받도록 합니다.

- const user = new User(req.body) = User 엔티티를 가지고 user 인스턴스를 생성합니다. 생성할 때 요청값 req 의 body안에 있는 정보들을 넣어서 생성합니다.

- user.save((err, userInfo) => {
    if(err) return res.json({success: false, err})
    return res.status(200).json({ 
      success: true
    })
  })

생성한 user 인스턴스를 저장합니다.

만약 저장에 실패하면 응답값 res 를 반환하는데 json 형식으로 success : false 그리고 err 를 반환합니다.

정상적으로 저장이 완료(res.status(200))되었다면 res 를 반환하는데 json 형식으로 success : true 를 반환합니다.

 

 

(4) PostMan 으로 기능 확인

코드 작성이 완료되었으면 터미널에 npm run start 명령어를 입력하여 index.js 를 실행해줍니다.

 

PostMan 을 실행하고 앞서 회원가입 요청을 할 때 post 방식으로 하기로 했으니 POST 메소드로 설정,

서버 주소는 "/register" 경로를 추가한 http://localhost:3000/register 주소를 넣습니다.

그리고 raw 를 체크하고 JSON 으로 변경하고 req에 넣을 json 형식의 요청 데이터를 입력합니다.

위에는 name, email, password 3개의 정보들만 넣어서 요청을 보냅니다.

앞서 만들었던 User.js 를 확인해보면,

 

name, email, password 말고도 lastname, role, image, token, tokenExp 와 같은 요소들이 있어서 다 넣어줘야 되는 것이 아니냐고 생각할 수 있지만, 기본적으로 설정을 따로 해주지 않으면 required: false 인 상태라 굳이 넣어주지 않아도 되는 기본 설정이 되어있습니다.

만약 반드시 넣어주어야 되는 요소라면 required: true 설정을 넣어주면 됩니다.

 

다시 PostMan 으로 돌아와서 send 버튼을 눌렀을 때, index.js 에 작성한 코드대로

{

"success":"true"

}

가 나오면 정상적으로 기능이 수행된 것입니다!

728x90
반응형
LIST