일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩공부
- 백준
- DP
- bob 9기 후기
- 동적 프로그래밍
- 정보 보안
- 백준 알고리즘
- 추리 소설
- Blind SQL Injection
- 백준알고리즘
- webhacking.kr
- 히가시노 게이고
- 백엔드 개발
- 독서
- 코딩 공부
- 백엔드
- 알고리즘
- 가가 형사 시리즈
- serializer
- Django Rest Framework
- Django Restful API
- 웹 개발
- Django CRUD
- best of the best
- KITRI
- 삼성 SW 역량 테스트
- 일본 소설
- 웹 해킹
- bob
- 코딩
- Today
- Total
요모조모 ʚɞ
[D.R.F] Django REST Framework 시작하기 본문
안녕하세요 ♪(´▽`)
오늘은 Django REST Framework의 개념과 간단한 튜토리얼을 소개하려고 합니다!
최근 아는 분의 스타트업 팀에 합류해서 백엔드 개발자로 일하고 있는데,
이 곳에서는 Django RESTful API를 사용하여 앱과 웹을 구축하더라구요!
저는 '멋쟁이 사자처럼'이라는 동아리를 통해 REST framework를
아주 살짝.. 맛 본 경험밖에 없어서 이번에 다시 공부를 해야 했답니다 ^^*
공부하면서 나중에 다시 쓸 일이 있을 것 같은 내용을 블로그에 정리해놓으려고 해요!
하지만 실제 개발 중인 서비스에 대해서는 코드나 기능을 올릴 수 없기 때문에
웹 개발의 가장 기본 예시인 게시판에 비유를 하여 제가 공부한 내용의 극 일부를 업로드하려고 합니다.
Django REST framework를 통한 개발을 시작하기에 앞서 몇 가지 개념에 대해 소개하겠습니다.
우선 REST, RESTful이라는 용어의 의미에 대해 설명드리겠습니다.
REST, RESTful은 REpresentational State Transfer을 뜻하는 말로
인터넷, 웹 등을 포함한 분산 하이퍼미디어 시스템을 위한 소프트웨어 설계 형식입니다.
쉽게 말하면 HTTP를 통해 이름으로 구분된 자원의 상태를 전송하는 방법이라고 볼 수 있습니다.
REST의 설계 원칙으로는 server와 client의 존재, STATELESS, Uniform Interface 등 다양한 조건이 존재하지만,
현재 대부분의 RESTful API에서는 이 원칙을 지키지 못하고 있다고 하네요. (Django 포함)
현대 HTTP 통신에서는 JSON 형식으로 데이터를 많이 주고받는데, JSON의 특성이 REST의 의도를 벗어나기 때문입니다.
(self-descriptive 조건 만족 x)
다음으로 API는 Application Program Interface를 뜻하며, request와 response로 오가는 구조화된 데이터를 의미합니다.
client와 server 간의 메신저, 매개체 역할을 통해 서로 간의 데이터를 특정 형식에 맞게 전달하는 역할을 합니다.
RESTful API는 이러한 RESTful의 개념과 API를 합쳐서 REST 설계 원칙을 따르는 API를 의미하며,
우리는 RESTful API를 통해 HTTP로 CRUD 등의 기능을 수행하는 API를 개발할 수 있습니다.
백엔드에서 개발한 RESTful API를 프론트 단에서 활용하면 사용자가 실제로 보는 화면까지 구성할 수 있겠죠!
REST framework는 이러한 RESTful API를 쉽게 구현할 수 있도록 도와주는 오픈 소스 라이브러리입니다.
Django REST framework도 그중 하나입니다.
Django의 경우에는 아래의 공식 홈페이지를 통해 관련 정보를 쉽게 얻을 수 있었습니다!
www.django-rest-framework.org/
그럼 다음으로는 본격적인 RESTful API 구현에 들어가기에 앞서 기본적인 설치와 세팅을 진행하도록 하겠습니다.
1. Python 설치하기(www.python.org)
Django REST framework를 사용하기 위해 필요한 python 버전 정보입니다.
-
Python (3.5, 3.6, 3.7, 3.8, 3.9)
위의 버전 중 적절한 버전의 python을 설치한 후 cmd 창에서 python을 입력했을 때 오류가 나지 않는지 확인합니다.
2. 가상 환경 실행하기
다음으로는 python 가상 환경을 만든 후 이를 실행해줍니다!
가상 환경을 통해 독립된 공간에서 원하는 패키지를 설치하고, 실행할 수 있습니다.
참고로 저는 visual studio code의 bash terminal을 활용하였습니다.
-
python 가상 환경 생성 (myvenv 대신 원하는 가상환경 이름으로 설정)
python -m venv myvenv
-
가상환경 실행
source myvenv/Scripts/activate
3. Django와 Django Rest framework 설치
Django는 (2.2, 3.0, 3.1) 중 하나로 설치하도록 합니다.
-
Django 설치
pip install django
-
Django REST framework 설치
pip install djangorestframework
4. Django 프로젝트 만들기
django-admin.py startproject test_project
5. app 만들기
다음으로는 프로젝트의 구성단위인 app을 만들어줍니다.
app은 보통 manage.py 파일이 존재하는 경로에 만들어주는 것이 일반적입니다!
python manage.py startapp project
6. 생성한 app 등록하기
settings.py를 통해 이전에 등록한 app의 존재를 project에게 알려줍니다.
이전에 'pip install djangorestframework' 명령어를 통해 설치한 rest_framework도 함께 추가해줍니다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'project',
]
7. 마이그레이션
마이그레이션을 통해 Django 프로젝트의 기본 테이블을 생성합니다.
마이그레이션은 model을 생성, 혹은 수정 시에 계속 수행해주어야 합니다.
python manage.py migrate
8. 웹 서버 실행하기
manage.py 파일이 존재하는 경로에서 아래의 명령어를 입력하여 Django 서버를 실행시켜 줍니다.
python manage.py runserver
서버를 실행하면 위의 사진과 같이 초기 페이지가 생성된 것을 확인할 수 있습니다!
이제 Django REST framework를 개발하기 위한 기본적인 세팅이 완료되었습니다 ~
다음번에는 실제로 웹 페이지를 구현해보도록 하겠습니다.
원래는 D.R.F는 게시글 한 두 개 안으로 담고 싶었는데,, 너무 TMT 였네요.. ★
아 그리고! RESTful API를 사용하면 프론트와 백의 역할 분담을 좀 더 명확하게 할 수 있다고 합니다.
(백엔드는 API를 구현하고, 프론트엔드에서는 API의 요소를 화면에 띄워주는 식으로)
이 부분은 실제로 개발을 진행해보니 확실히 느껴지더라구요.!
좀 더 제대로 된 프로젝트를 진행하고 싶으시다면 RESTful API를 공부해보는 것도 좋을 것 같습니다 :)
'개발 > Django RESTful API' 카테고리의 다른 글
[D.R.F] 커스텀 유저 구현하기 - 회원가입, 로그인 (12) | 2021.02.18 |
---|---|
[D.R.F] ViewSets으로 CRUD 구현하기 (5) | 2021.01.21 |
[D.R.F] Generic CBV로 CRUD 구현하기 (0) | 2021.01.20 |
[D.R.F] Mixins로 CRUD 구현하기 (0) | 2021.01.18 |
[D.R.F] APIView로 CRUD 구현하기 (2) | 2021.01.13 |