from rest_framework import serializers
from .models import ChwideukModel
class ChwideukSerializer(serializers.ModelSerializer):
class Meta:
model = ChwideukModel
fields = ['title']
9. views.py 파일을 수정해준다.
from rest_framework.views import APIView
from rest_framework.response import Response
class ChwideukRouter(APIView):
def get(self, request):
return Response({'success': True})
def post(self, request):
return Response({'success': False})
10. apiServer 폴더의 urls.py에 방금 만든 라우터를 추가해준다.
from django.contrib import admin
from django.urls import include, path
from chwideukapp.views import ChwideukRouter
urlpatterns = [
path('admin/', admin.site.urls),
path('api/chwideuk/', ChwideukRouter.as_view())
]
11. 서버를 시작하고 postman으로 실험해보았다. ( 서버 포트는 8000, 로컬 포트는 8001 입니다 )
이번엔 우리가 새로운 라우터를 만들어보자. 아래 명령어 한 줄로 손쉽게 앱을 하나 만들 수 있다.
$ python manage.py startapp api_server
1. 먼저 Model을 수정해준다.
/api_server/models.py
from django.db import models
class APIServer(models.Model):
title = models.CharField(max_length=70, default='')
link = models.URLField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
2 pythonProject 폴더 안 settings.py에 api_server 앱을 추가해준다.
from rest_framework import serializers
from .models import APIServer
class APIServerSerializer(serializers.ModelSerializer):
class Meta:
model = APIServer
fields = ['title']
Serializer 는 queryset 과 model instance 같은 것들을 쉽게 JSON 또는 XML 의 데이터 형태로 렌더링 할 수 있게 해줍니다. 우리는 APIServer 모델을 serialize 해줘야 하기 때문에 ModelSerializer를 사용합니다.
5. views 파일을 수정해준다.
/api_server/views.py
from rest_framework import viewsets
from .serializers import APIServerSerializer
from .models import APIServer
class APIServerRouter(viewsets.ModelViewSet):
queryset = APIServer.objects.all()
serializer_class = APIServerSerializer
rest_framework 의 viewset 을 사용하면 CRUD 로직을 짜지 않아도 사용 가능하게 해준다.
6. pythonProject 폴더의 urls.py 파일을 수정해준다.
/pythonProject/urls.py
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from api_server.views import APIServerRouter
router = routers.DefaultRouter()
router.register('apiserver', APIServerRouter)
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls'))
]
7. 서버를 시작해 8000번 포트를 켜보자.
8. /apiserver 경로로 들어가보면 GET 과 POST 메소드를 GUI로 사용할 수 있다.
자바스크립트보다는 파이썬이 웹 스크래핑에 유용하다 하여 Django 서버를 만들게 되었다.
웹 크롤링과 웹 스크래핑의 차이점은? 웹 크롤링과 웹 스크래핑은 모두 정보를 추출해온다는 데서는 공통점을 지닙니다. 하지만 '타켓 웹 페이지의 유무'와 '중복 제거(deduplication)의 실행 여부'에서 차이가 납니다. 웹 크롤링은 특정 웹 페이지를 목표로 하지 않습니다. 일단 탐색부터 하고, 정보를 가져오죠. '선탐색 후추출'입니다. 반면 웹 스크래핑을 할 때는 목표로 하는 특정 웹페이지가 있습니다.우리가 원하는 정보를 어디서 가져올지 타겟이 분명하고, 그 타겟에서 정보를 가져오죠. 그래서 '선결정 후추출'입니다. 또, 웹 크롤링에서는 중복 제거가 필수적입니다. 중복되거나 불필요한 정보를 가져와서 분류를 더 어렵게 할 필요는 없으니까요. 도서관의 책이 개별적으로 구분되는 색인이 있는 것처럼 웹 크롤링도 수집한 웹 페이지가 중복되지 않도록 서로 다른 색인을 남깁니다. 그래서 웹 크롤링을 웹 인덱싱(web indexing)이라고도 부릅니다. 반면 웹 스크래핑에서는 중복 제거가 필수는 아닙니다. 중복된 정보를 가지고 있을 필요는 없지만, 그렇다고 꼭 필수적으로 하는 일도 아니죠.