"detail": "CSRF Failed: CSRF token missing or incorrect." "detail": "CSRF Failed: CSRF token missing or incorrect." Postman으로 API 요청 테스트를 하면서 위에 에러를 마주했다. 에러의 원인은 생각보다 간단했다. CSRFToken!!처음 Django를 시작했을 때 CSRF에 대해서 애를 먹었고, 프론트와 연동하면서 CSRF가 프레임워크마다 다른 이름으로 불린다는 것을 알게 되고 어느 정도 마스터를 했다 생각했는데, 갑자기 CSRF 에러를 마주하니깐 순간 머리가 하얘졌다. 분명 제대로 설정하였고 문제가 되는 부분이 없다고 생각했는데, 과거에는 swagger를 사용하다가 postman으로 테스트를 하니 잘 안..
기존의 Swagger를 사용한 이유는 내가 작성한 코드를 기반으로 자동으로 API를 만들어주는 부분이 너무 편해서 진행하였는데 프로젝트를 진행하다보니, 자동으로 코드를 만들어 준다는 점이 어떻게 보면 단점으로 다가 왔다. 가장 큰 문제점은 코드의 순수성을 해치는 것이 문제였다. Postman은 API 통신 테스트를 하기 위해서만 사용하는줄 알았는데, 2016년쯤 부터 Postman에서 API문서 작업을 지원한다는 것을 알게 되었고 Postman으로 API 문서 작성을 선택하였다. Postman과 Swagger의 차이점Swagger코드를 기반으로 자동으로 API문서 생성개발한 코드를 바탕으로 Swagger UI에서 API 테스트PostmaneAPI 문서를 작성 후, 코드를 작성API 명세서로 Postm..
예시 @swagger_auto_schema( operation_id="구글 로그인 콜백", operation_description="구글에서 반환한 인증 코드를 넣으면, 회원가입 or 로그인 후 서버 토큰 리턴\n" "닉네임이 없으면 message를 True 반환\n" "True면 닉네임, 프로필, 이름, 한줄 소개 업데이트", tags=['소셜 로그인'], manual_parameters=[ openapi.Parameter( 'code', in_=openapi.IN_QUERY, description='구글에서 반환한 인증 코드', type=openapi.TYPE_STRING, required=True, ), ], ) 프로젝트에서 사용한 구글 로그인 인증 코드를 입력하면 로그인 or 회원가입을 진행해주는..
코드# settings.py# swagger settingsSWAGGER_SETTINGS = { "DEFAULT_INFO": "obab.urls.api_info", "USE_SESSION_AUTH": False, "VALIDATOR_URL": None, "SECURITY_DEFINITIONS": { "Bearer": {"type": "apiKey", "name": "Authorization", "in": "header"} },}위의 코드는 Django 프로젝트의 설정 파일(settings.py)에서 Swagger 설정을 구성하는 부분입니다. Swagger는 API 문서를 생성하고 제공하는 도구이며, DRF(Django Rest Framework)와 함께 사용되어 A..
왜 drf-spectacular 인가? 나는 처음 drf doc api를 찾아보면서 drf-yasg와 django-rest-swagger 가 주로 많이 언급 되었었는데 drf-yasg가 특히나 많은 사람들이 사용하는 것 같아서 drf-yasg로 진행하였다. 하지만 사용할 수록 불편함이 많았고 OpenAPI 3.0도 지원하지 않는 다는 것을 알았다. 그래서 찾아 보다가 drf-spectacular를 찾게 되었다. drf-spectacular는 2020년 3월에 첫 릴리즈된 drf의 openAPI 3.0을 지원하는 유일한 오픈소스이다. drf-spectacular의 장점 swagger UI의 버전과 설정값들이 drf-spectacular의 버전에 의존하지 않는다. drf-spectacular는 라이브러리 자..