node js는 매우 자유롭다. 자바스크립트 특성상 타입을 엄격하게 구분하지않는다.
이런 점은 장점이 되기도 하지만 실수의 여지가 될 가능성이 높다.
그래서 자체적인 코드로 API의 response값을 체크해주게 되는데, 이는 코드의 중복을 늘리게 된다.
이런 불편함에 node는 response value에 대해 validation check를 위한 joi라는 모듈을 제공한다.
조이 모듈은 스키마로 데이터의 조건을 설정한다.(나는 스키마만 모아두는 schema.js 파일에 모두 넣어 쓰기로 했다.)
예를 들어, name과 birthyear을 body의 값으로 받아온다고 하면(post방식)
name, unit 은 스트링일 것, 파라미터에 꼭 포함될 것을 조건으로 가지고 있다.
(조건은 훨씬 다양하다.)
이 조건중 하나라도 어겨질 시에는 error를 뱉어내며, 어떤 조건을 위배했는지 알려주는 valitator 로직을 추가한다.
라우터에 validator middleware 를 추가한다.
조건으로 등록된 스키마와 req.body값의 조건이 일치하는지 확인하고 조건이 일치할 경우, 다음 로직으로 넘어간다.
조건이 일치하지 않을 경우, 422에러와 함께 위배하는 조건에 대한 에러 메시지를 출력해준다.
결국 스키마는 라우터에 맞게 모두 커스터마이징 해야겠지만 습관이 된다면 코드도 줄고 실수의 여지도 매우 줄어들 것이라 생각한다.
*아래블로그의 예시와 설명을 참고했다.
https://dev.to/itnext/joi-awesome-code-validation-for-node-js-and-express-35pk
'Langauge > JAVASCRIPT' 카테고리의 다른 글
for문은 되는데 map은 안됩니다? (0) | 2021.07.16 |
---|---|
Javascript는 왜 single thread 일까? (0) | 2021.06.29 |
node.js - createstrategy 사용하기 (0) | 2020.11.19 |