users/urls.py
from django.urls import path
from . import views
app_name = 'users'
urlpatterns = [
path("list/", views.list_users),
]
다음으로 view를 작성해보는데 함수형 뷰
를 처음으로 작성해볼것이다. (물론 클래스형 뷰에 대해서도 알아 볼 것이다.)
# users/views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(["GET"])
def list_user(request):
return Response()
데코레이터를 이용해서 api_view를 view 함수 위에 선언만 해주면 된다.
근데 api_view만 선언해주면 끝인가? 아니다 HTTP Method에서 봤듯이 HTTP Method를 적어줘야 이 함수가 어떤 method일때 요청을 받는지 정해줘야한다.
위에서는 GET method 하나만 적어줬지만, CRUD에 쓰이는 GET, POST, PUT, DELETE method 다 적어도 문제 없다.
ex) @api_view(["GET", "DELETE", ...])
API를 위해서 어떤 method가 허용되어야하는지 잘 알아야한다.
그리고 중요한 부분이 있는데 함수안에 Response가 아니고 다른 내용들을 입력하고 호출 한다면 아래 이미지와 같은 에러가 발생 할것이다.
![사진1](https://user-images.githubusercontent.com/46446165/122639226-b2e7b900-d133-11eb-8049-e7ff9f58680d.png)
type이 아닌것을 받았다고 api 응답 해주기 위해선 response가 필요하다.
다행인건 django에선 response를 HTTP 패키지에서 import 해줄 수 있다. from rest_framework.response import Response
일단 빈 응답(Response())
으로 해주고 runserver를 돌려보자
그러면 django에서 무료로 제공되는 api 페이지를 보여 줄거다. (만약, 또 다른 에러가 뜬다면 구글에 잘 검색해보자)
페이지가 정상적으로 뜬다면 상단 부분 (page-header)에 우리가 함수에 적용해놓은 method가 있을것이다.
한가지만 선언해서 확인하지말고 여러개 선언해보고 직접 눈으로 확인해보자.
'Django' 카테고리의 다른 글
DRF ModelSerializer (0) | 2021.06.19 |
---|---|
DRF serializer (0) | 2021.06.19 |
django rest framework에 대해서 (0) | 2021.06.19 |
(django template) typescript 적용시키기 (0) | 2021.03.13 |
django settings.py 분리 시키기 (0) | 2020.11.15 |