Django 15. API
Django 15. API
1. 라이브러리 임포트
pip install djangorestframework
2. settings.py 설정
Installed_APPS 배열에 'rest_framework' 추가
3. 모델 생성
앱 폴더 안의 models.py 파일에 사용할 모델 클래스 작성
참고 : https://kumioriscodingdiary.blogspot.com/2023/07/django-10-db.html
* 예시
4. Serializer 생성
모델의 데이터를 json 타입으로 변환해줌 -> 직렬화 작업
앱 폴더에 serializers.py 파일 생성
rest_framework의 serializers 임포트
models.py의 모델 클래스 임포트
serializers.ModelSerializer 클래를 상속받는 클래스 정의
내부 클래스로 Meta를 정의
멤버변수 model에 사용할 모델 클래스 지정
fields 멤버변수에 사용할 테이블의 항목들을 배열로 전달 (모든 항목을 이용하려면 "__all__" 전달)
* 예시
5. views.py 생성
cbv 방식
rest_framework의 viewsets 임포트 해서 viewsets.ModelViewSet를 상속받는 클래스 작성
멤버 변수 queryset 에 사용할 쿼리문 지정
멤버 변수 serializer_class에 사용할 ModelSerializer 클래스 지정
* 예시
6. urls.py 구현
프로젝트 폴더의 urls.py 에서 앱 폴더의 urls.py로 연결
* 예시
- 앱 폴더의 urls.py 설정
rest_framework의 routers 임포트
routers.DefautlRouter 클래스의 인스턴트 생성
생성한 인스턴스의 register 함수에 이름과 사용할 ViewSets 클래스 전달
* 예시
urlpatterns 배열의 path에 include(router.urls) 지정 -> 자동으로 url 설정을 해줌
서버를 실행하고 접속하면 자동으로 생성된 UI에서 데이터에 접근 가능
GET, POST, DELETE, PUT 가능
<실행결과>
7. 웹 페이지에서 api 정보 받아오기
- JavaScript를 이용해서 정보 받기
fetch() 함수 이용. () 안에 받아올 api의 url 전달
* 예시
* CORS 에러
다른 도메인에서 api 에 요청하면 브라우저에서 CORS 에러를 발생시킴
- 해결법
pip install django-cors-header
settings.py 파일에서 설정
INSTALLED_APPS 배열에 'corsheaders' 추가
MIDDLEWARE 배열의 가장 상단에 'corsheaders.middleware.CorMiddleware' 추가
CORS_ORIGIN_WHITELIST 배열에 요청을 허용할 호스트들을 추가하거나 모든 요청을 허용하려면 CORS_ORIGIN_ALLOW_ALL 를 TRUE로 설정
-> 서버를 실행하고 웹 페이지에서 api에 요청하면 정상적으로 정보를 받을 수 있음
<실행결과>





댓글
댓글 쓰기