Express API에 express-validator 통합

3771 단어 javascriptnode

원본 게시물은 여기에서 찾을 수 있습니다.



익스프레스 유효성 검사기가 필요한 이유는 무엇입니까?



UI가 양식 또는 여러 입력 필드를 사용하고 백엔드 익스프레스 애플리케이션에서 데이터베이스 스키마에 대해 해당 데이터의 유효성을 검사하려는 경우 짧고 간단합니다. 그러면 실제로 처리하기 전에 먼저 유효성을 검사해야 합니다. 물론 모든 종류의 논리와 정규식을 작성하여 모든 유효성 검사를 수동으로 수행할 수 있습니다. 그러나 이미 무언가가 당신을 위해 그것을하고 있다면 왜 바퀴를 재발 명해야합니까? 여기에서 express-validator 라이브러리가 필요합니다.

나는 의존적인 라이브러리를 너무 싫어합니다. 어때요?



express-validator는 validator.js를 감싸는 래퍼이며 데이터 조작을 위해 lodash를 사용합니다. 따라서 기본적으로 두 가지 종속성이 있습니다. 이미 lodash를 사용하고 있어야 하므로 추가 패키지와 라이브러리를 처리할 필요가 없습니다.

좋아 천재지만 그것을 달성하기 위해 내 자신의 미들웨어를 작성할 수 있습니까? 당신의 이 라이브러리가 그것보다 어떻게 더 낫습니까?



이봐, 당신은 깨지기 힘든 너트입니다. 물론 이 세상의 모든 것을 혼자서 할 수 있습니다. 그러나 급행 경로를 확인하는 것이 얼마나 쉬운지 생각해 보십시오. Express 애플리케이션에서 express-validator를 사용하여 즉시 이를 수행할 수 있습니다. 아 그리고 데이터를 삭제할 수도 있다고 언급했습니까? 또한 오류 메시지를 사용자 정의할 수 있는 모든 자유가 있습니다. 계속 읽으시면 방법을 알려 드리겠습니다.

내용을 설명하기 위해 내 Github repohttps://github.com/sprakash57/Contrivocial 중 하나에서 참조할 것입니다.

전제 조건
  • node.js v6+

  • 설치
  • npm i -S 익스프레스 유효성 검사기

  • 추신: 이 블로그를 작성하는 시점에서 express-validator의 버전은 6.6.1입니다. 그것은 당신에게 동일하지 않을 수 있습니다.

    용법



    1단계 - middleware/validation.js(모든 유효성 검사를 한 곳에서 유지하기 위해).



    여기에서는 이름, 이메일 및 비밀번호의 3개 필드가 있는 사용자 등록의 예를 들어보겠습니다.

    const { check } = require('express-validator');
    
    exports.signupValidation = [
        check('name', 'Name is requied').not().isEmpty(),
        check('email', 'Please include a valid email').isEmail().normalizeEmail({ gmail_remove_dots: true }),
        check('password', 'Password must be 6 or more characters').isLength({ min: 6 })
    ]
    


    먼저 importcheck해야 합니다. 두 개의 매개변수가 필요합니다. 첫 번째는 필드이고 두 번째는 응답으로 보내려는 오류 메시지입니다.

    isEmail 또는 isEmpty와 같은 유효성 검사를 수행하기 위해 check 메서드를 연결할 수 있습니다. 일부 살균을 원하면 살균 방법을 추가할 수도 있습니다. 유용한 목록은 여기에서 찾을 수 있습니다. 내가 가장 좋아하는 것은 normalizeEmail({ gmail_remove_dots: true })입니다. [email protected][email protected]을 동일하게 취급합니다.

    const { signupValidation } = require('../../middleware/validation');
    
    router.post('/register', signupValidation, userController.register);
    


    두 번째 단계는 경로를 조정하는 것입니다. 사용자 등록 경로 내부에는 1단계에서 생성한 signupValidation 미들웨어를 도입했습니다.

    3단계 - 컨트롤러/user.js



    이제 사용자 등록 컨트롤러를 약간 변경할 차례입니다. 이 컨트롤러 내부의 모든 유효성 검사 메시지를 포착하기 위해 나는 express-validator에서 validationResult를 가져왔습니다.

    const { validationResult } = require('express-validator');
    
    exports.register = async (req, res) => {
    
      const errors = validationResult(req);
    
      if (!errors.isEmpty()) return res.status(400).json({ errors: errors.array() });
    
      ......
    
      ......
    
    }
    


    validation.js 내부에 있는 signupValidation 메소드에서 메시지를 가져오려면 요청 객체를 전달해야 합니다. 이 작업이 완료되면 errors.array()를 사용하여 배열 형식의 모든 오류 메시지에 액세스할 수 있습니다.

    그게 전부입니다. app.js를 건드릴 필요가 없습니다. 방금 표면을 긁었습니다. 달성할 수 있는 것이 많습니다. 하지만 익스프레스를 처음 시작하는 초보자에게는 이 정도면 충분하다고 생각합니다. 더 자세히 알아보려면 공식 문서https://express-validator.github.io/docs를 읽을 수 있습니다.

    내 Github repo here 에서 위의 전체 구현을 확인하십시오. 설정하는 데 도움이 되는지 확인하세요. 리포지토리의 별은 높이 평가될 것입니다.

    좋은 웹페이지 즐겨찾기