2016년 2월 28일 일요일

[MEANI-Stack] - #9 (Node & Express) 회원가입 API작성

[MEANI-Stack] - #9 (Node & Express) 회원가입 API작성




회원가입 API를 위해 유저 모델부터 정의합니다.

제 생각에 당장 필요한 필드는 email, password, role 세가지이며
언제 생성 되었는지 알기위해 createdAt을 자동으로 추가 하기로 하고 모델을 작성했습니다.



required는 인자를 필수로 설정하는것 입니다.
해당 인자가 없을경우 오류를 발생시킵니다.

enum의경우 들어온 인자를 사전 설정된 값으로 제한시킵니다.

validate의 경우 들어온 인자값을 모델에서 검증하는 도구입니다.
route나 controller에서 작업해도 되지만 순수하게 모델에서 작업하였습니다.
validate 참고링크 : http://mongoosejs.com/docs/validation.html







생성도니 모델을 이용해서 controller에 아래와 같이 작업하였습니다.



create메소드는 파라미터로 넘어온 email이 기존에 존재하는지 count메소드를 통해 체크하고,
count값이 0일경우 회원가입을 진행하도록 하였습니다.

list메소드는 경우 기존 find를 사용하였고
findUserByEmail 메소드는 리퀘스트의 파라미터로 오는 email로 찾도록 하였습니다.








라우터 구성은 위와같이 restful하게 접근하였고 delete는 만들지 않았습니다.
(나중에 필요하면 만들 예정)






작성한 내용들을 아래와 같이 각각 express.js와 mongoose.js에 등록합니다.



model과 routes를 등록한것 이외에
express에 bodyParser.urlencloeded를 extended: false -> true로 변경하였고
mongoose 디버깅을 위해
mongoose.set('dedub', true);를 추가하였습니다.

만약 process.env.NODE_ENV에 대해 잘 모르겠다면 아래 링크된 글을 참고하세요

[Node.js] Node.js 환경변수 process.env.NODE_ENV 에 대한 이해 및 사용 [Node.js] Understanding the Node.js and using environment variables process.env.NODE_ENV







postman으로 작성한 API를 테스트 해봅니다.


첫번째는 회원가입 비정상 케이스, password를 6자리만 입력해봅니다.

에러 메시지가 이쁘진 않지만 그럭저럭 잘 넘어오는군요



두번째는 회원가입 정상케이스





회원가입된 유저를 호출 해봅니다.




굿 제대로 넘어오네요




다음은 유저 리스트



좋습니다 잘 넘어옵니다.
이상있는 데이터들은 validate를 하기 전 테스트 한 데이터들 입니다.



mongoose 디버깅 되고있는 부분도 확인해봅니다.



잘나옵니다.





작업의 마무리는 커밋!
github : https://github.com/polyglotm/PP-MEANI-stack-back-end

그리고 문서 업데이트!






언제나 포스트의 마무리는 애자일 보드 확인 및 다음 태스크 선정입니다.



이번 태스크를 진행하면서 절실하게 머리속을 맴돈것은
"유닛 테스트를 빨리 붙여야겠다" 였어요...

API는 계속 늘어만 갈텐데 뭐 하나 바뀔때마다
손가락으로 클릭 클릭해서 포스트맨 날리려면 어휴... 끔직합니다...
그리하여 다음 태스크는 (Node & Express) 회원가입 API Test 작성 으로 선정되었습니다.



댓글 없음:

댓글 쓰기