Django REST Framework路由Routes
在Django REST Framework中,我们可以使用路由来定义API的访问入口。这些路由可以通过不同的方式进行定义。
方法一:使用函数视图
在Django REST Framework中,我们可以使用标准的Django路由语法来定义路由。
例如,我们有一个名为HelloView
的函数视图,如下所示:
# views.py
from django.http import HttpResponse
def HelloView(request):
return HttpResponse("Hello, World!")
我们可以在urls.py
中定义路由,如下所示:
# urls.py
from django.urls import path
from .views import HelloView
urlpatterns = [
path('hello/', HelloView),
]
方法二:使用类视图
除了函数视图,我们还可以使用类视图定义API。
例如,我们有一个名为HelloView
的类视图,如下所示:
# views.py
from django.http import HttpResponse
from django.views import View
class HelloView(View):
def get(self, request):
return HttpResponse("Hello, World!")
我们可以在urls.py
中定义路由,如下所示:
# urls.py
from django.urls import path
from .views import HelloView
urlpatterns = [
path('hello/', HelloView.as_view()),
]
方法三:使用Django REST Framework提供的APIView
我们可以使用Django REST Framework提供的APIView
来创建API。
例如,我们有一个名为HelloView
的API视图,如下所示:
# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
class HelloView(APIView):
def get(self, request):
return Response("Hello, World!")
我们可以在urls.py
中定义路由,如下所示:
# urls.py
from django.urls import path
from .views import HelloView
urlpatterns = [
path('hello/', HelloView.as_view()),
]
方法四:使用@api\_view装饰器
我们还可以使用Django REST Framework提供的@api_view
装饰器来创建API。
例如,我们有一个名为hello
的函数视图,如下所示:
# views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
def hello(request):
return Response("Hello, World!")
我们可以在urls.py
中定义路由,如下所示:
# urls.py
from django.urls import path
from .views import hello
urlpatterns = [
path('hello/', hello),
]
方法五:使用SimpleRouter
对于较为简单的API,我们可以使用SimpleRouter
来定义路由。
例如,我们有一个名为Book
的Model,如下所示:
# models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
我们有一个名为BookViewSet
的视图集,如下所示:
# views.py
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all
评论已关闭