MVC-양식 유효성 검사를 구현할 위치 (서버 측)?
-
09-06-2019 - |
문제
기존 MVC 애플리케이션을 코딩 할 때 서버 측 양식 유효성 검사를 코딩하는 모범 사례는 무엇입니까?코드가 컨트롤러에 속합니까, 아니면 모델 레이어에 속합니까?그리고 그 이유는 무엇입니까?
해결책
Wikipedia에서 : <인용구>
모델-뷰-컨트롤러 (MVC)는 소프트웨어 엔지니어링에 사용되는 아키텍처 패턴입니다.패턴을 성공적으로 사용하면 비즈니스 로직이 사용자 인터페이스 고려 사항과 분리되어 애플리케이션의 시각적 모양이나 기본 비즈니스 규칙을 다른 것에 영향을주지 않고 쉽게 수정할 수 있습니다.MVC에서 모델은 애플리케이션의 정보 (데이터)와 데이터를 조작하는 데 사용되는 비즈니스 규칙을 나타냅니다.보기는 텍스트, 확인란 항목 등과 같은 사용자 인터페이스의 요소에 해당합니다.컨트롤러는 키 입력 및 마우스 움직임과 같은 사용자 동작 모델에 대한 통신과 관련된 세부 정보를 관리합니다.
따라서 모델은 애플리케이션과 비즈니스 규칙을 담고 있습니다.
다른 팁
저는 Josh와 완전히 동의합니다.그러나 컨트롤러와 모델 사이에 일종의 유효성 검사 계층을 만들어 데이터가 모델에 도달하기 전에 대부분의 구문 유효성 검사를 수행 할 수 있습니다.
예 :
검증 레이어는 날짜 형식, 금액 형식, 필수 필드 등을 검증합니다.
따라서 해당 모델은 x 금액이 y 금액보다 커야하는 것과 같은 비즈니스 유효성 검사에만 전적으로 집중합니다.
지금까지 MVC에 대한 나의 경험은 전적으로 레일로 구성되어 있습니다.
Rails는 모델에서 100 % 검증을 수행합니다.
대부분의 경우 이것은 매우 잘 작동합니다. 10 번 중 9 번이면 충분합니다.
그러나 양식에서 제출하는 내용이 모델과 제대로 일치하지 않는 영역이 있습니다. 추가 필터링 / 재정렬 등이있을 수 있습니다.
내가 찾은 이러한 상황을 해결하는 가장 좋은 방법은 기본적으로 모델 객체처럼 작동하지만 양식 데이터와 일대일로 매핑하는 가짜 모델 객체를 만드는 것입니다. 이러한 가짜 모델 객체는 실제로 아무것도 저장하지 않으며 검증이 첨부 된 데이터의 버킷 일뿐입니다.
이러한 것의 예 (레일에서)는 ActiveForm
데이터가 해당 데이터로 들어가면 (유효한 경우) 일반적으로 실제 모델로 직접 전송하는 매우 간단한 단계입니다.
기본 구문 검사는 모델에 대한 사용자 입력을 변환하므로 컨트롤에 있어야합니다.모델은 실제 데이터 유효성 검사를 수행해야합니다.