2023. 5. 19. 01:16ㆍ기술 창고/Node.js
BodyParser는 클라이언트에서 서버로 요청을 보낼 때 해당 요청을 받는 작업을 수행해줍니다.
예를 들어 로그인 화면에서 아이디와 비밀번호를 입력하고 서버로 보내게 되면 그 아이디와 비밀번호가 우선 BodyParser에 담긴다고 볼 수 있습니다.
그래서 간단한 회원가입 기능을 만들면서 이 BodyParser 를 사용하기 위해 dependency를 추가하도록 하겠습니다.
또한 구현한 기능을 테스트하기 위한 아주 적합하고 사용도 쉬운 PostMan 까지 설치하여 사용해보겠습니다.
(1) BodyParser 설치
진행하고 있던 프로젝트 툴 (비주얼 스튜디오) 의 터미널에 npm install body-parser --save 명령어를 입력하면 위와 같이 패키지가 설치됩니다.
(2) PostMan 설치
https://www.postman.com/downloads/
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"
}
가 나오면 정상적으로 기능이 수행된 것입니다!
'기술 창고 > Node.js' 카테고리의 다른 글
[Node] 비밀 설정 정보 관리 (0) | 2023.05.19 |
---|---|
[Node] Nodemon 설치 및 적용 (0) | 2023.05.19 |
[Node] SSH를 이용하여 GIT HUB 연결 (0) | 2023.05.18 |
[Node] GIT 설치 및 연동 (0) | 2023.05.04 |
[Node] MongoDB 모델링 및 스키마 설정 (0) | 2023.05.04 |