django rest framework 를 이용한 crawling api 만들기 - django rest framework tutorial

김재영·2021년 3월 6일
0

django restframework

목록 보기
2/3
post-thumbnail

1. django 개발환경 셋팅하기

(pycharm professional 버전을 사용여 개발환경을 세팅하였습니다.)


drf_test 라는 장고 프로젝트를 생성. conda를 이용하여 가상환경을 설정함.


프로젝트 생성시 파이참에서 다음과 같이 세팅. 가장 상위에 직전에 만든 프로젝트 폴더가 있습니다. 해당 프로젝트 폴더 아래에 같은 이름으로 앱이 생성됩니다.
settings.py : 장고 프레임워크 개발환경 셋팅(templates, db, static 파일 등)
urls.py : url mapping
wsgi,asgi.py : 장고배포시 사용하는 파일

2. django 개발환경에서 app 만들어주기. djangorestframework 라이브러리 설치.

터미널 창에서 프로젝트 폴더로 이동후
pip install djangorestframework
python manage.py startapp 'your_app_name'
저같은 경우는 rest_api 라는 앱을 만들 었습니다.

앱을 만든 후 만들어진 앱과 rest drf_test/settings.py 에서 생성된 앱을 INSTALLED_APPS 에 등록해 줍니다.
INSTALLED_APPS =
[
...,
'drf_test.apps.Drf_testConfig',
rest_framework
]

3. django 와 mongoDB 연결하기

터미널 환경에서  pip install djongo
settings.py 에 다음과 같이 작성해준다.

DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': '접근하고자 하는 DB ',
'CLIENT': {
'host': '호스트 아이피 주소',
'port': 포트포워딩 한 포트 (default: 27017),
'username': '유저아이디',
'password': '비밀번호',
'authSource': 'authentication db',# usually admin <- 왜잇는지 잘모르겟다. 일단 admin 이 기본값
}
},
}

4. project 모델 생성하기(클라이언츠 요청)

api 명세 작성에 따라 모델 만들기

요청 파라미터 : 
user_id(유저 아이디)
service_key(api 서비스 키)
project_name(프로젝트 대표할 이름)
project_type(프로젝트의 타입 kwd or author)
channel(크롤링 대상 채널)
keywords(크롤링 키워드 리스트)

5. serializers.py(django model 을 json 형태로 만들어주기 위한 파일)

serializers 를 만들 때 2가지 옵션 중 선택해서 사용가능 코드 중복를 방지하기 위해 2번째 방식 사용

4.1 serializers.Serializer 사용
해당 클래스를 상속받아 클래스를 만들 경우에는 모델에서 직렬화(json 형태로 변환) 할 필 드를 재정의 해주어야함
4.2 serializers.ModelSerializer 사용
해당 클래스를 상속받을 경우 모델에서 직렬화 할 필드 리스트를 입력하기만 하면 된다. 코드를 concise 하게 관리가능

5. views.py

api view 를 만드는 방법 다양함 필자는 처음 api veiw 를 만들어보기 때문에 추상화된
장고의 classView를 사용하기보다는 functionView 를 사용하여 봤을때 직관성이 더 높은 코드작성을 추구하였음. 
views 를 작성할 때는 serializers 객체를 이용하여 모델을 json 형태로 변환시켜 주는 작업이 필요함.

5.1 project_list: 프로젝트 전체 리스트 조회, 프로젝트 생성

5.2 project_detail : 프로젝트 개별 정보 조회, 업데이트, 삭제

6. urls.py 생성

views.py url 맵핑해주기 위해 urls.py 파일을 생성한 앱 폴더에 추가한다.
urls.py 에는 list 조회 url, detail 조회 url 2가지가 필요함.


path('restAPI/project/') 해당 부분은 전체 프로젝트 리스트를 조회할 때, ajax로 POST 요청시 project 추가할 때 사용됨.
path('restAPI/project/<int:pk>') 해당 부분은 project 의 id 값에 따라 개별적으로 조회, 수정, 삭제 시 사용됨

7. 실제 도메인으로 테스트

기존에 ec2 에서 운영중인 도메인(http://datacast/kr) 을 이용하여 restAPI를 배포하였음. 

http://datacast.kr/trend/restAPI/projects

0개의 댓글