DRF 구현 시 발생할 수 있는 문제와 오류
- 회원가입
- 오류 1: 필수 입력 값 검증 오류: username, email, password 같은 필수 입력값이 누락되면 ValidationError가 발생할 수 있습니다. Serializer가 필수 필드를 올바르게 검증하도록 해야 합니다.
- 오류 2: 중복 값 오류: 중복된 username이나 email로 회원가입을 시도할 경우 IntegrityError가 발생할 수 있습니다. Serializer에서 고유 값 검증을 반드시 처리해야 합니다.
- 오류 3: 비밀번호 해싱 문제: 비밀번호가 올바르게 해싱되지 않으면 평문으로 저장될 수 있습니다. 회원가입 시 Django의 make_password를 사용하여 비밀번호를 해싱해야 합니다.
- 오류 4: 선택적 필드 처리: gender나 bio 같은 선택적 필드가 잘못 처리되면, 값이 비어 있을 때 문제가 발생할 수 있습니다. 모델이나 Serializer에서 null=True 또는 blank=True 설정이 제대로 되어 있는지 확인해야 합니다.
- 로그인
- 오류 1: 인증 실패: 잘못된 로그인 정보로 인해 HTTP 401 Unauthorized가 발생할 수 있습니다. 잘못된 username이나 password에 대한 명확한 에러 메시지를 반환하도록 해야 합니다.
- 오류 2: 토큰 발급 문제: JWT 같은 토큰 인증 설정이 잘못되어 있으면 토큰 발급이 누락되거나 잘못된 토큰이 반환될 수 있습니다. 로그인 성공 시 토큰 발급이 정상적으로 이뤄지는지 확인해야 합니다.
- 오류 3: 비활성 사용자/삭제된 사용자: 비활성화되거나 삭제된 사용자가 로그인하려 할 때 인증이 실패할 수 있습니다. 사용자의 활성 상태를 확인해야 합니다.
- 프로필 조회
- 오류 1: 권한 거부: 사용자가 로그인하지 않은 상태에서 프로필을 조회하려고 할 때 HTTP 403 Forbidden 오류가 발생할 수 있습니다. IsAuthenticated 권한을 뷰에 올바르게 적용해야 합니다.
- 오류 2: 프로필 없음: 존재하지 않는 사용자명으로 프로필을 조회하려 할 때 404 Not Found가 발생할 수 있습니다. 이 경우 적절한 에러 메시지를 반환해야 합니다.
상품 관련 오류들
- 상품 등록
- 오류 1: 필드 누락: 필수 필드인 title이나 image가 누락되면 400 Bad Request가 발생할 수 있습니다. Serializer에서 필수 필드에 대한 검증을 확실히 해야 합니다.
- 오류 2: 권한 없음: 로그인하지 않은 상태에서 상품 등록을 시도하면 403 Forbidden이 발생할 수 있습니다. POST 메서드에 IsAuthenticated 권한을 적용해야 합니다.
- 오류 3: 이미지 업로드 문제: 파일 업로드 설정이 잘못되면 이미지 업로드 시 오류가 발생할 수 있습니다. 미디어 설정 및 파일 크기 제한을 점검해야 합니다.
- 상품 목록 조회
- 오류 1: 페이지네이션 설정 오류: 페이지네이션 설정이 잘못되면 성능 저하가 발생하거나 결과가 반환되지 않을 수 있습니다. 페이지네이션 설정을 제대로 구성해야 합니다.
- 오류 2: 상품 데이터 누락: 상품 목록 조회 시 결과가 없으면 데이터 조회 로직을 점검해야 합니다.
- 오류 3: 성능 문제: 대용량 데이터를 처리할 때 최적화되지 않은 쿼리로 인해 성능 문제가 발생할 수 있습니다. 효율적인 쿼리 사용과 페이지네이션을 적용해야 합니다.
- 상품 수정
- 오류 1: 권한 거부: 작성자가 아닌 사용자가 상품을 수정하려고 하면 403 Forbidden이 발생할 수 있습니다. IsAuthorOrReadOnly 권한이 올바르게 적용되었는지 확인해야 합니다.
- 오류 2: 잘못된 데이터 입력: 수정 요청 시 잘못된 데이터를 입력하면 400 Bad Request가 발생할 수 있습니다. 입력 데이터를 정확히 검증해야 합니다.
- 오류 3: 존재하지 않는 상품: 존재하지 않는 상품을 수정하려고 할 때 404 Not Found 오류가 발생할 수 있습니다.
- 상품 삭제
- 오류 1: 권한 없음: 작성자가 아닌 사용자가 상품을 삭제하려고 할 때 403 Forbidden이 발생할 수 있습니다. 삭제 권한이 올바르게 설정되었는지 확인해야 합니다.
- 오류 2: 존재하지 않는 상품: 존재하지 않는 상품을 삭제하려고 할 때 404 Not Found가 발생할 수 있습니다. 이를 처리하는 로직을 구현해야 합니다.
- 오류 3: 연관 데이터 삭제 문제: 상품이 다른 모델과 연관되어 있을 경우 삭제 시 IntegrityError가 발생할 수 있습니다. CASCADE 삭제 설정이 제대로 되어 있는지 확인해야 합니다.
'Daily note' 카테고리의 다른 글
Today I Learned(TIL)-57 (0) | 2024.09.13 |
---|---|
Today I Learned(TIL)-56 (2) | 2024.09.11 |
Today I Learned(TIL)-54 (0) | 2024.09.09 |
Today I Learned(TIL)-53 (0) | 2024.09.09 |
Today I Learned(TIL)-52 (1) | 2024.09.06 |