Validate 메서드 작성은 어디에 하는게 좋을까?
시리얼라이저에서 검증 로직 처리하고, 뷰에서 데이터베이스에 접근하여 중복검사 등을 수행한다.
validate 메서드와 관련된 코드를 시리얼라이저와 뷰에 모두 작성할 수 있다.
대신 각각의 접근 방식의 장단점이 있을테니 찾아봄
1. 시리얼라이저에 validate 메서드 작성
- 장점
- 데이터 유효성 검사를 시리얼라이저 수준에서 처리할 수 있음.
- 시리얼라이저는 입력 데이터를 검증하고 오류가 있을 경우 ValidationError을 발생시킴
- -> 즉, 뷰에서 별도의 검증 로직을 작성할 필요가 없어짐
- 단점
- 오직 시리얼라이저 내부에서만 사용됨
- -> 뷰에서 동일한 검증 로직을 수행하기 위해 시리얼라이저를 직접 호출해야함.
- 시리얼라이저 내부에서 데이터베이스에 접근하여 중복 검사를 하는 경우에는 시리얼라이저에 해당 로직을 작성하기 어려울 수 있음.
2. 뷰에 validate 메서드 작성
- 장점
- 시리얼라이저의 create 메서드를 호출하기 전에 추가적인 검증 로직을 수행할 수 있음
- 뷰는 데이터베이스와 직접 상호작용할 수 있으므로 중복 검사 등 수행하기 좋음
- 단점
- 시리얼라이저와 뷰 간의 코드 중복이 발생할 수 있음
- 같은 로직을 두 곳에서 작성해야 하므로 유지관리가 어려움
- 뷰에서 수행되는 검증 로직은 시리얼라이저 수준에서 처리되지 않으므로 시리얼라이저 내부의 create 메서드를 호출하기 전에 올바른 데이터인지 확인해야 함
- 시리얼라이저와 뷰 간의 코드 중복이 발생할 수 있음
반응형
'STUDY > Python' 카테고리의 다른 글
Django REST Framework 소셜로그인 (0) | 2023.08.07 |
---|---|
Trailing slash 사용 | URL에 GET parameters를 사용할때는? (0) | 2023.07.31 |
Exception has occurred: improperlyConfigured (0) | 2023.07.18 |
🎄 학습일지 22.12.11 (0) | 2022.12.12 |
🎄 학습일지 22.12.10 (0) | 2022.12.10 |