--------------------------- 376

Django + 외부 API

외부 API 사용하기실제 서비스 개발은 단순히 내부 로직만으로 끝나지 않음대부분의 경우 외부 서비스와 연동하는 작업이 필요제휴 업체와 협업할 때, 그들의 API 문서를 받아서 우리가 직접 연동하게 됨 예시: CU Post와 제휴CU Post 개발팀은 API명세서(문서) 제공해당 문서를 해석하여 직접 요청하고 응답을 처리하는 연동 로직 구현→ 업체가 대신 개발해주거나 자동으로 연동되는 것이 아님  자주 사용하는 외부 API소셜 로그인 (구글, 카카오 등)결제 서비스 (PG사 연동)날씨/지도/뉴스 등 외부 데이터 APIChatGPT(OpenAI) API번역, 문자 발송, 이미지 생성 등 OpenAI API와 Django API로 번역 기능 제공 gpt-3.5-turbo 기준 1,000,000 tokens =..

API 문서화(Documentation)

API 문서 API 사용법을 정리한 문서단순 구두로 설명하거나 메시지로 공유하는 방식의 한계 → API 사용법을 정리한 문서를 만드는 API 문서화(Documentation) 필요 조직에 맞게 완벽하게 커스터마이징 가능별도의 학습 없이 누구나 문서 작성 및 수정 가능코드가 변경될 때마다 문서를 따로 수정해야 함 (코드 변경 시 문서를 수정하지 않는다면, 문서와 실제 API가 달라지는 신뢰도 문제 발생)  API 문서에 담는 정보들Endpoint(어떤 URL에 요청해야 하는지)HTTP 메서드(GET, POST, PUT, DELETE...)필요한 헤더(Header) 정보요청 시 전송할 데이터 형식응답 데이터의 구조예외 상황 에러 코드 안내API 문서는 조직에 따라 개발과 문서화에 사용하는 툴이 다르기 때문에..

Redis를 Django 캐시 백엔드로 설정하기

Redis(Remote Dictionary Server)외부에 존재하는 key-value 저장소빠른 응답 속도를 바탕으로 캐싱, 세션 관리 등에 활용 In-memory 데이터베이스: 메모리에 데이터를 저장하여 디스크보다 약 1,000배 빠름다양한 데이터 타입 지원복잡한 쿼리 불필요데이터를 잊어버릴 수 있음 → cache 만료시간(TTL) 등으로 관리 가능단일 작업 처리 → 오히려 성능 안정성과 예측 가능성 향상→ 데이터를 빠르게 읽고 쓰는 데 최적화된 도구  Redis의 활용 카운터(Counter)로 사용조회수, 방문자 수 등의 실시간 카운팅에 적합 DB 대신 Redis에 먼저 기록하고, 주기적으로 DB에 반영 자주 변경되는 데이터예: 좋아요, 팔로우실시간 랭킹, 인기 게시물 계산 등에도 유용→ 초당 1..

Django ORM(Object Relational Mapping) 활용

Django에서 ORM(Object Relational Mapping) 데이터베이스 테이블을 파이썬 객체처럼 다룰 수 있게 해주는 기술→ Python 쉘이나 view, script 안에서 실행할 수 있음   사전 준비하기 products 앱 생성, Product 모델 정의python manage.py startapp products# settings.pyINSTALLED_APPS = [ ..., # Local "products", ...]# products/urls.pyfrom django.urls import pathurlpatterns = []# urls.pyfrom django.contrib import adminfrom django.urls import path, includ..

2025.03.29

행복하다!!04:30 취침 10:00 기상DRF 빨리 조져버리고 싶다. 이제 빨리끝낼 수 있을 것 같은데 자꾸 더디다.이브는 자꾸 화장실에서 뒹굴더니 털이 하얘서 몰랐는데 꼬리 속살이 엉망진창이었다.털이 길어서 웬만한 샤워로는 안되고 애기 때 곰팡이 닦아줄 때처럼 털을 뒤져가면서 닦아준다. 싫다고 꼬리를 탁탁하는데 어쩌라고다.흥오빠랑 저녁으로 가라아게를 먹었다.맛은 그저그랬다.샤워안했다. 요가도 안했다. 물도 안마셨다. 제주도가는데 짐도안쌌다.후웅..

2025/미정 2025.03.30

Token Auth with JWT

JWT (JSON Web Token) 인증 방식 토큰 자체에 유저 정보를 담아 별도의 인증 저장소(DB 등) 없이 인증 가능Cookie는 브라우저에 국한되므로 다양한 환경에서 통합 인증이 어려움 → JWT방식의 Token 인증이 사용됨토큰 자체가 하나의 인증 데이터 클라이언트가 ID/PW 전송서버는 검증 후 JWT 발급클라이언트는 JWT를 헤더에 담아 서버에 요청서버는 토큰 유효성 확인 후 요청 처리*Cookie(쿠키)웹 브라우저와 요청과 응답을 주고받을 때 사용하는 데이터 조각쿠키는 도메인에 제한적이며 유효기간이 정해져있음Auth 외에도 다양한 방식으로 활용**Session(세션)stateless한 HTTP 특징을 보완하기 위한 방법세션 DB를 이용해서 유저의 정보를 기억하며 Session ID라고 하..

DRF models with relationship CRUD API 구현

관계(Relationship)가 있는 모델 처리 관계가 있는 모델을 직렬화(Serialization)하고 API를 통해 CRUD 기능 구현Article - Comment 관계  댓글 기능에 필요한 API특정 게시글의 모든 댓글 조회 (GET /articles/comments/)특정 게시글에 댓글 작성 (POST /articles/comments/)특정 댓글 삭제 (DELETE /articles/comments//)특정 댓글 수정 (PATCH /articles/comments//)  모델 정의# articles/models.pyclass Comment(models.Model): article = models.ForeignKey( Article, on_delete=models.CASCADE..

Class Based View (CBV)

Class Based View (CBV) Django와 Django REST Framework(DRF)에서 View를 작성하는 두 가지 방식FBV (Function Based View): 함수로 처리CBV (Class Based View): 클래스로 처리 CBV의 장점 HTTP 메서드별 처리(get(), post(), put(), delete() 등)를 메서드 단위로 분리할 수 있어 가독성과 유지보수성이 높아짐클래스 기반이라 공통 로직을 재사용하기 좋고, 확장성이 뛰어남DRF는 CBV를 더 쉽게 쓰기 위한 기본 클래스를 제공 CBV 클래스 종류 (DRF 기준)APIViewCBV의 기본 클래스 - 직접 메서드 정의 필요GenericAPIViewAPIView 기반 + 쿼리셋, 직렬화 등 기본 기능 내장Mix..

728x90