Develop/Django

[Django] Django 이용한 REST API 서버 구축

dawonny 2021. 7. 31. 13:04
728x90
반응형

https://dawonny.tistory.com/11?category=991193 

API 에 대해서 정리한 포스트.

이번에는 REST API 서버를 구축을 한번 해보고 싶다.

해봐야 뭐가 뭔지 알 것 같아서.

아래 포스팅을 참고했다.

http://throughkim.kr/2018/05/29/django-rest/

 

Django를 이용한 Rest API 서버 구축

Django를 이용해 Restful한 API 서버를 구축하는 방법을 익혀본다. Ubuntu 16.04-64-server Python 3.5.2 Django 2.0.5 django-rest-swagger 2.2.0 환경 세팅 파이썬 버전을 확인해 준다. 파이썬 3.x 버전이 없다면 설치해준

throughkim.kr

https://jamanbbo.tistory.com/43

 

django REST framework로 간단한 api 만들기

django REST ramework (DRF)는 RESTful한 API를 쉽게 만들 수 있도록 해준다.  지금부터 DRF를 사용해 영화 리스트를 CRUD (Create,Read,Update,Delete) 할 수 있는 간단한 API를 만들어 볼 것이다. 혹시 REST..

jamanbbo.tistory.com

 


 

가상환경을 사용하는 이유 : 파이썬 패키지(라이브러리) 간 의존성 때문에 쓴다

특정 패키지 버전을 업데이트 할 때 다른 것들이 호환되지 않아 문제가 생기는 경우가 발생한다

그리고 작업 환경 바뀌더라도( pc 교체하더라도 ) 필요한 패키지들을 동일한 버전으로 설치해 작업할 수 있음

 

찾다보니 virtualenv 와 venv 를 쓸 수 있더라

근데 파이썬 3에서는 venv 라는 가상환경 라이브러리라 기본적으로 제공 되어서 굳이 virtualenv 설치해서 안써도 된다고 함.

 

가상환경 생성하기위해 내가 작업하는 폴더안으로 들어가자

그리고 

python -m venv 가상환경이름

이렇게 쳐주면 된다. 가상환경 이름은 그냥 venv로 만들었다. 어떤 프로젝트든 가상환경을 활성화 하고 싶을때 venv 라는 이름으로 사용하면 되기 때문.

 

이제 가상환경 활성화를 시켜보려고 한다.

가상환경이름\Scripts\activate.bat

이라고 치면 된다(나는 venv\Scripts\activate.bat 이라고 쳤음)

그랬더니

이렇게 뜬다.

맨 왼쪽에 ( 가상환경이름 ) 이렇게 뜨면 활성화가 되었다는 의미이다.

비활성화 하고 싶으면 아무것도 없이 그냥 deactivate 이라고 치면 된다

 

일단 가상환경을 만들고, 진입 했으니 pip으로 django와 django-rest-framework를 설치한다

 

pip install django

pip install djangorestframework

pip install django-rest-swagger

pip 버전 업그레이드 하라는 노란 글씨가 매우 신경이 쓰여서.. 해봤다

된..듯하다

 

 

그리고 아래와 같이 

'rest_framework', 'moves.apps.MoviesConfig'

Django Rest Framework와 앱을 등록해줌

그 담엔 Movie 라는 모델 생성

필드가 3개다

 

모델을 만들고 나서는

python manage.py makemigrations

python manage.py migrate

을 해줬다

 

이번엔 serializer 를 생성해줄거다

Serializer란 queryset과 모델 인스턴스와 같은 복잡한 데이터를 json,xml 또는 다른 유형으로 쉽게 변환할 수 있다.

serializers.py

serializers 를 임포트하고

모델 Movie도 임포트 한다

 

이번에는 views.py 를 작성하려고 한다

django rest framework 는 view 로직을 그룹화한 viewset을 제공한다

이거 사용하면 CRUD 직접 안짜도 기능을 사용할 수 있다.

views.py (10번째 줄에 Movie다 Move가 아니라)

viewsets 임포트하고

serializers.py에서 MovieSerializer 임포트

models.py 에서 Movei 모델 임포트

 

이번엔 urls.py를 작성해보자

 

rest framework에는 router 라는게 있는데 viewset을 router에 연결하면 

자동으로 url을 맵핑 해준다.

 

runserver하고 localhost:8000 에 들어갔더니

이렇게 보인다

movies/ 링크로 들어가보면

이렇게 보인다

GET/movies 는 영화의 리스트를 요청하는 uri 이다

지금은 빈 리스트를 반환하고 있다.

 

영화를 몇 개 저장해보자

3개를 추가해줬다.

http://localhost:8000/movies/3/

로 들어가면 저렇게 id가 3인 movie 객체를 볼 수 있다.

 

PUT 메소드로 보내면 해당객체를 수정하고

DELETE 메소드로 요청하면 해당 객체를 삭제함.

 

 

728x90
반응형