DRF(5)
-
[DRF] Custom Permission- URL based permission
URL-based permission URL 패턴에 따라 사용자에게 다른 권한을 부여하는 방식을 의미한다. URL dispatcher Django는 일반적으로 URLconf 파일을 가지고 있다. URLconf 파일은 각 app단의 urls.py 모듈에서 정의된다. 이 파일에는 urlpatterns 변수를 정의하고, 이 변수는 URL 패턴을 리스트로 나타내며, 각 패턴은 path() 또는 re_path() 함수를 사용하여 정의한다. Django는 URLconf 파일에 URL 패턴을 정의하고 각 패턴에 대해 어떤 view 함수나 클래스를 호출할지를 지정해 매칭시킨다. URL dispatcher는 HTTP요청이 들어올 때마다 적절한 url에 연결해주는 기능을 의미한다. 이러한 기능을 기반으로 특정 URL 패턴..
2023.04.21 -
[DRF] Custom Permission 생성- BasePermission
permission_classes DRF는 API View에서 요청을 처리하기 전에 실행되는 인증 및 권한 검사를 위해 permission_classes 속성을 제공한다. 보안을 위해 클라이언트의 요청이 특정 권한을 가지고 있는지 확인하는 데 사용되며 APIView 클래스에서 상속받아 사용할 수 있다. 클래스의 종류 DRF는 몇가지 기본 클래스를 제공하고 직접 커스텀 하여 권한 클래스 사용할 수도 있다. AllowAny : 모든 요청에 대해 인증 없이 접근을 허용 IsAuthenticated : 인증된 사용자만 접근을 허용 IsAdminUser : 관리자 권한을 가진 사용자만 접근을 허용 IsAuthenticatedOrReadOnly : 인증된 사용자는 모든 HTTP 메소드를 사용할 수 있지만, 인증되지..
2023.04.19 -
[DRF] Serialization / Deserialization 동작 변경 - to_internal_value와 to_representation
Serialization과 Deserialization Serialization과 Deserialization은 사용자와 클라이언트가 API에서 데이터를 읽고 쓸 수 있도록 API에서 데이터를 표현하고 전송하는 데 사용되는 기능이다. Serialization 직렬화 Serialization은 데이터 객체를 JSON 또는 XML 등의 포맷으로 변환하는 과정으로 DRF에서는 Serializer 클래스를 사용하여 객체를 직렬화할 수 있다. Serializer는 ModelSerializer, Serializer 및 다른 유형의 Serializer 클래스를 포함하는 다양한 유형이 있고 Serializer를 사용하면 모델 인스턴스를 쉽게 JSON, XML 또는 다른 포맷으로 변환할 수 있다. Deserializat..
2023.04.17 -
[Django] JSON WebToken - Simple JWT
JSON WebToken 유저를 인증하고 식별하고 JSON 형식의 데이터를 안전하게 전송하기 위한 토큰 기반의 인증 시스템이다. 특징 세션과 다르게 서버가 아닌 클라이언트에 저장되어 메모리, 스토리지 등 세션을 관리했던 서버의 부담이 줄어든다. 토큰 자체에 데이터가 담겨있어 판별가능하다. 상태를 유지하지 않아 Stateless하다. 인증 방식 유저가 로그인 요청을 한다. 서버 단에서 유저(클라이언트)에게 유일한 토큰을 발급한다. 클라이언트는 서버 측에서 전달받은 토큰을 쿠키나 스토리지에 저장해두고, 서버에 요청할 때마다 해당 토큰을 HTTP 헤더에 포함시켜 전달한다. 서버는 전달받은 토큰을 검증하고 요청에 응답한다 토큰에 요청한 사람의 정보가 담겨있으므로 DB조회 없이 유저 식별이 가능하다. JWT 구조..
2023.03.30 -
[Django] DRF로 pagination 적용하기 -PageNumberPagination
페이지네이션(Pagination) 구글에 DRF pagination으로 검색을 하면 많은 결과가 한번에 보여지는 것이 아니라 다음과 같이 페이지별로 보여진다. 결과가 약 만개라고 가정했을 때 매번 전체 결과를 가져오면 속도가 굉장히 느리고 유저입장에서는 불편할 것이다. 따라서 전체 데이터에서 지정된 값 만큼 데이터를 나눠서 가져오는 방식을 페이지네이션 이라고 한다. http://127.0.0.1:8000/user/?page=2 DRF에서는 PageNumberPagination, LimitOffsetPagination, CursorPagination 와 같은 페이지네이션 기능을 제공하고 있다. 이 글에서는 실제 사용을 한 PageNumberPagination로 페이지네이션을 적용하는 것에대해서만 작성하려고..
2023.03.16