STUDY/Python

Validate 메서드 작성 = 시리얼라이저? 뷰?

nicesugi 2023. 7. 19. 05:11

Validate 메서드 작성은 어디에 하는게 좋을까?

시리얼라이저에서 검증 로직 처리하고, 뷰에서 데이터베이스에 접근하여 중복검사 등을 수행한다. 

validate 메서드와 관련된 코드를 시리얼라이저와 뷰에 모두 작성할 수 있다.

대신 각각의 접근 방식의 장단점이 있을테니 찾아봄


 

1. 시리얼라이저에 validate 메서드 작성

  • 장점
    • 데이터 유효성 검사를 시리얼라이저 수준에서 처리할 수 있음.
    • 시리얼라이저는 입력 데이터를 검증하고 오류가 있을 경우 ValidationError을 발생시킴
    • -> 즉, 뷰에서 별도의 검증 로직을 작성할 필요가 없어짐
  • 단점
    • 오직 시리얼라이저 내부에서만 사용됨
    • -> 뷰에서 동일한 검증 로직을 수행하기 위해 시리얼라이저를 직접 호출해야함.
    • 시리얼라이저 내부에서 데이터베이스에 접근하여 중복 검사를 하는 경우에는 시리얼라이저에 해당 로직을 작성하기 어려울 수 있음.

 

2. 뷰에 validate 메서드 작성

  • 장점 
    • 시리얼라이저의 create 메서드를 호출하기 전에 추가적인 검증 로직을 수행할 수 있음
    • 뷰는 데이터베이스와 직접 상호작용할 수 있으므로 중복 검사 등 수행하기 좋음
  • 단점
    • 시리얼라이저와 뷰 간의 코드 중복이 발생할 수 있음
      • 같은 로직을 두 곳에서 작성해야 하므로 유지관리가 어려움
    • 뷰에서 수행되는 검증 로직은 시리얼라이저 수준에서 처리되지 않으므로 시리얼라이저 내부의 create 메서드를 호출하기 전에 올바른 데이터인지 확인해야 함

 

 

 

 

반응형