관리 메뉴

꿈 많은 사람의 이야기

파이썬 Django REST API 개발 - 1편. djangorestframework 설치 및 셋팅 본문

python-django

파이썬 Django REST API 개발 - 1편. djangorestframework 설치 및 셋팅

이수진의 블로그 이수진의 블로그 2019. 7. 25. 14:33

완성된 코드는 아래 github 주소에 있습니다!

도움이 되셨다면 좋아요와 깃허브 스타를 눌러주세요! 저에게 있어 큰 힘이 됩니다 ㅠㅠhttps://github.com/lsjsj92/django_todo_app

 

 

파이썬 장고(django)로 웹 개발하는 시리즈를 오랜만에 올립니다.

이미 내용은 다 있지만 블로그에 올릴 시간이 없었네요 ㅎㅎ

지난번 내용은 장고와 Ajax를 연동시켜서 웹 개발을 하는 것까지 진행했습니다.

(https://lsjsj92.tistory.com/490)

 

이번 포스팅부터는 django와 REST API를 연동하는 작업을 진행하려고 합니다.

REST API는 굉장히 많이 들어보셨을겁니다. RESTful API 라고도 하죠.

 

REST API는 HTTP의 기능도 지원해줘서 HTTP의 장점이 그대로 적용이 됩니다.

REST는 자원의 이름(resource name)을 가지고 클라이언트와 서버가 통신하는 방법을 뜻합니다.

약자가.. REpresentational Stateful Transfer였나? 아마 그랬을겁니다.

 

파이썬 장고에서는 이 REST API를 정말 쉽게 연동할 수 있습니다.

이미 라이브러리가 제공되고 있기 때문이죠!

 

자 그럼 시작해볼까요?

 

 

먼저 pip install djangorestframework를 입력해서 django rest api를 설치해줍니다.

 

아! 그리고 여기서 주의하셔야 할 것이

 

실제 장고(django) 서버와 REST 서버는 따로 운영이 되어야 합니다.

즉, 2개가 실행되고 있어야 한다는 것이죠!

 

 

그러면, 또 다른 project를 하나 만듭니다. 이 프로젝트는 저는 todoSubject_restfulAPI 라고 하겠습니다.

그리고 app도 하나 만들어줍니다.

저는 이 app을 todo_subject_restful_main 이라고 명명하겠습니다.

이 포스팅은 쭈욱 진행되고 있는 내용이 todo 게시판을 만드는 것이기 때문입니다.

todo board를 만드는데 있어 기존에는 그냥 DB와 연동했다면 이제 rest api와 연동하는 것이니까요

 

python manage.py startapp todo_subject_restful_main 이라고 합니다.

 

 

자! 그러면 project setting.py에 들어가보면 위와 같은 구역이 있을탠데요

여기서 INSTALLED_APPS에다가 rest_framework를 추가해줍니다.

그리고 아까 만들었던 app도 추가해줍니다.

 

 

 

그리고 추가했던 app에 보시면 serializers.py가 있어요

이 시리얼라이저(serializers)는 시리얼라이즈(serialize)라고도 불리우는데요.

이것은 객체와 같은 보기 힘든 데이터를 JSON이나 XML처럼 보기 쉽게 데이터를 바꾸어 통신하게 해주는 역할을 합니다.

그래서 여기 serializers.py에다가 시리얼라이저를 설정해주어야 어떤 데이터를 통신할 지 설정할 수 있는 것이죠!

REST API를 만들 때 필수적입니다. 데이터를 통신해줘야 하니까요

 

 

저는 serializers.py에다가 위와 같이 썼습니다. 

from rest_framework import serializers를 한 뒤 HyperlinkedModelSerializer를 상속해줍니다.

그 이후 model은 TodoList를 설정해줍니다. 통신할 모델을 설정해주는 것이죠

그리고 필드는 title, content와 같은 통신할 데이터 필드를 설정해주면 끝!

 

 

그리고 아까 만들었던 app에 해당되는 models.py에 들어갑니다.

여기에 models에 대한 설정을 해주면 됩니다.

그럼 여기에 설정한 model을 가지고 serializer 통신을 하게 됩니다.

 

 

그리고 views.py로 넘어갑니다.

view에서는 방금 만들었던 serializer와 model을 연동시켜줍니다.

rest_framework에 있는 viewset에서 modelViewSet을 가져와서 연동시켜줍니다.

 

 

다음은 urls.py입니다.

여기서는 rest_framework에서 routers를 가져옵니다.

그리고 todo_board라는 이름으로 views에 있는 방금 만들었던 view에 있는 클래스를 연동시켜주죠

 

자! 이제 이 프로젝트를 실행시켜줍니다

 

python manage.py runserver나 아니면 nginx 등을 하고 있으면 다른 것으로 할 수 있겠죠

아무튼 실행시켜줍니다!

 

 

그러면 위와 같은 화면이 나옵니다

신기하죠? 그냥 지원이 됩니다 이런 화면이 ㅎㅎ

이게 장고의 장점이지 않을까 싶습니다.

 

근데 우리가 원하는 데이터가 보이지 않네요?

아까 저희가 model.py를 통해서 model을 연동시켰죠?

근데 model은 연동시켰는데 막상 mysql과 연동은 안시켜놨습니다

 

 

그래서 setting.py에서 pymysql을 이용해서 mysql과 연동해줍니다.

 

 

이렇게 정보를 입력해주고요~

다시 실행시켜줍니다.

 

 

그리고 다시 보면 http://localhost:8088/todo"라고 적혀져있죠?

저대로 입력해봅니다

 

 

그러면 이렇게 나오는 것을 확인할 수 있습니다!

이 화면이 rest api의 R 부분이라고 보시면 됩니다

READ 부분이죠. 전체 데이터를 볼 수 있습니다.

그 외 CREATE(INSERT), UPDATE 등도 가능합니다.

기능을 추가해야겠지만요 ㅎㅎ 아무튼 가능합니다.

 

 

실제 insert를 해볼까요? 위 처럼 데이터를 입력해서 넣습니다.

POST는 REST API에서 INSERT에 해당됩니다.

PUT이 UPDATE이죠 ㅎㅎ

 

 

이렇게 하면 실제 DB에 들어간 것을 볼 수 있습니다.

 

 

그리고 파이썬에서 requests 라이브러리를 사용해서 통신을 해 가져오면 이렇게 가져오는 것을 볼 수 있습니다.

자! 여기까지 파이썬 django를 활용해서 rest api를 연동시킨 작업입니다.

이제 다음 포스팅에서 진행했던 todo app을 rest api 버전으로 바꿔보겠습니다!

0 Comments
댓글쓰기 폼