Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오블완
- ERD
- github
- JWT
- Til
- 쿠키(cookie)
- redis
- nginx
- 코딩테스트
- 개발공부
- flask
- Wil
- git
- 연습
- docker
- 자료구조
- NoSQL
- SQL
- 아티클 스터디
- 장고
- 세션(Session)
- 티스토리챌린지
- 도커
- web
- 파이썬
- Doker
- Python
- django
- viewsets
- CS
Archives
- Today
- Total
SteadyDrills
장고(Django)의 Routers 본문
250110
Routers란?
Django REST framework(DRF)에서 사용되는 개념으로 ViewSet과 URL을 자동으로 연결해 주는 역할을 한다.
일반적으로, API 엔드포인트의 URL 패턴을 수동으로 설정해야 하지만, Router를 사용하면 이를 자동화할 수 있다.
Routers의 기본 구성 요소
구성요소 | 설명 |
routes | URL 패턴(엔드포인트)을 정의하는 규칙 목록. 각 라우트는 URL 경로, HTTP 메서드, ViewSet 메서드 등을 정의. |
register() | ViewSet과 URL prefix를 연결하고 라우트 정보를 등록. URL 패턴 생성을 준비. |
get_urls() | Router에 등록된 ViewSet에 따라 URL 패턴 리스트를 생성 및 반환. |
urlconf_name | 생성된 URLConf의 이름. |
예시
from django.urls import path,include
#Router 생성 및 ViewSet 등록
router = SimpleRouter()
router.register(r'users', UserViewSet, basename='user')
#urlpatterns 생성
urlpatterns = [
path('', include(router.urls)),
]
Router 클래스
SimpleRouter
- 가장 기본적인 Router 클래스로 기본 CRUD URL 패턴 (list, retrieve, create, update, destroy)만 생성한다.
- 별도의 API 루트(/api/ 같은 최상위 엔드포인트)는 생성하지 않는다.
- 특징
- 단순한 CRUD 엔드포인트만 필요할 때 적합.
- basename을 명시적으로 설정하지 않으면 ViewSet 이름을 기준으로 생성.
예시
from rest_framework.routers import SimpleRouter
from django.urls import path, include
from .views import UserViewSet
router = SimpleRouter()
router.register(r'users', UserViewSet, basename='user')
urlpatterns = [
path('', include(router.urls)),
]
- 생성되는 URL 패턴HTTP 메서드 URL ViewSet 메서드
GET /users/ list POST /users/ create GET /users/<pk>/ retrieve PUT /users/<pk>/ update DELETE /users/<pk>/ destroy
DefaultRouter
- SimpleRouter를 확장한 버전으로, 추가적으로 API 루트 페이지와 브라우저 탐색 가능한 인터페이스를 제공한다.
- API 루트(/)에 등록된 ViewSet을 자동으로 나열한다.
- 특징
- API 탐색 기능이 필요한 프로젝트에 적합.
- 브라우저에서 직접 API 루트를 확인할 수 있습니다.
- 예시
from rest_framework.routers import DefaultRouter
from django.urls import path, include
from .views import UserViewSet
router = DefaultRouter()
router.register(r'users', UserViewSet, basename='user')
urlpatterns = [
path('', include(router.urls)),
]
- 추가적으로 생성되는 API 루트 HTTP 메서드 URL 설명
GET / API 루트 페이지 (등록된 엔드포인트 목록)
Router의 장단점
장점 | 단점 |
CRUD URL 자동 생성 | 복잡한 URL 패턴 처리 한계가 있다. |
일관된 RESTful 구조 제공 | 자동 생성된 URL의 직관성 부족 → 협업 시 두드러짐. |
API 루트와 브라우저 탐색을 지원한다. | ViewSet에 의존적 이다. |
간편한 유지보수와 확장성 | 모든 프로젝트에 적합하지 않음 |
생산성 극대화 및 커스터마이징이 가능하다. | 퍼포먼스 오버헤드 발생 가능 → 내부적 추상화 계층이 더 많아서 동작하는 로직이 복잡하다. |
공식문서:https://www.django-rest-framework.org/api-guide/routers/
'웹개발' 카테고리의 다른 글
Django의 APIView, ViewSets, Generic View (0) | 2025.01.16 |
---|---|
로컬 스토리지(LocalStorage)란? (0) | 2025.01.13 |
장고(Django) ViewSets (3) | 2025.01.06 |
웹의 세션, 쿠키, 캐시 (0) | 2025.01.04 |
레디스 명령어 모음 (0) | 2024.12.23 |