유효성 검사란 사용자가 프론트 페이지에서 입력한 데이터 값이 서버에서 올바로 전송 받을 수 있는지 확인하는 검사이다.
보통 웹 회원가입을 진행 하는 경우 프론트에서 유효성 검사를 1차적으로 진행하지만, 변조된 값을 서버에 요청하는 경우도 배제할 수 없기 때문에, 백엔드에서 2차적으로 validation을 진행해야한다.
flask_request_validator 라는 패키지를 사용하여 파라미터 유효성 검사를 진행 할 수 있다.
프론트에서 parameter를 request.body 에 담아 요청할 때 값이 알맞은 수의 값들이 들어왔는지 유효한 값이 들어왔는지를 확인해준다.
from flask_request_validator import validate_params, Param, GET, PATH, JSON, Pattern, MaxLength
pip install flask_request_validator 를 통해 설치가 가능하다.
아래는 flask_request_validator 사용 방법이다.
There are 4 types of request parameters:
Here a list of possible rules for validation:
Supported types for values:
str, bool, int, float, dict, list
출처: https://github.com/d-ganchar/flask_request_validator
@account_app.route('/signup', methods=['POST'])
# 파라미터 유효성 검사
@validate_params(
Param('identification', JSON, str, rules=[Pattern(r'^[a-zA-Z][0-9a-zA-Z_-]{5,15}$')]), # 영문으로 시작, 숫자,영문대소문자 포함, 5글자 이상 15글자 미만
Param('password',JSON,str, rules=[MaxLength(20)]),# 비밀번호 최대 20자
Param('account_type_id',JSON,str,int),
Param('contact',JSON,str,rules=[Pattern(r'\d{3}-\d{4}-\d{4}')]),# 전화번호 형식
Param('attribute_id',JSON,str,int),
Param('korean_name',JSON,str,rules=[Pattern(r'[ㄱ-힣a-zA-Z0-9]')]), # 한글, 영문, 숫자만 입력
Param('english_name',JSON,str,rules=[Pattern(r'[a-z]')]),#셀러 영문명은 소문자만 가능
Param('cs_contact',JSON,str,rules=[Pattern(r'\d{2,3}-\d{3,4}-\d{4}')]),# 숫자와 하이픈만 입력
Param('status_id',JSON,str,int)
)
유효성 검사를 통과한 파라미터 값 예시
seller_info = {
'identification' : args[0],
'password' : args[1],
'account_type_id' : args[2],
'contact' : args[3],
'attribute_id' : args[4],
'korean_name' : args[5],
'english_name' : args[6],
'cs_contact' : args[7],
'status_id' : args[8],
}