在前端开发中,RESTful API 是一种常用的方式来与后端进行数据交互和通信。通过使用 Django 框架,可以很容易地创建并使用 RESTful API。在这篇文章中,我们将介绍如何使用 Django 开发 RESTful API。
什么是 RESTful API?
RESTful API 是一种基于 REST(Representational State Transfer) 架构风格的 API,它使用 HTTP 请求来进行数据的创建、读取、更新和删除。RESTful API 非常适合单页面应用程序,可以通过 Ajax 提交请求来实现局部更新。
Django REST framework
Django REST framework 是一个 Python 库,它为 Django 提供了很多支持 RESTful API 的功能。使用 Django REST framework 可以很容易地创建和管理 RESTful API,它提供了如下功能:
- 序列化和反序列化数据
- 基于类的视图和视图集
- 认证和权限管理
- 许多内置的渲染类和可扩展的渲染类
- 可自定义的异常处理
安装 Django REST framework
首先需要安装 Django,然后使用 pip 安装 Django REST framework:
pip install djangorestframework
安装后在 Django 项目的 settings.py
文件中添加 'rest_framework'
到 INSTALLED_APPS
中:
INSTALLED_APPS = [ # ... 'rest_framework', ]
创建 RESTful API
在 Django REST framework 中,可以使用类视图和视图集来创建 RESTful API。类视图使用 Django 的基于函数的视图来实现,而视图集使用 Django 的基于类的视图来实现。
使用类视图创建 RESTful API
在创建 API 之前,首先需要定义数据模型和序列化器。
数据模型
在 Django 中,数据模型通常使用模型类来定义。下面是一个简单的模型类例子:
from django.db import models class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField() created_at = models.DateTimeField(auto_now_add=True)
序列化器
序列化器用于将数据对象序列化为 JSON 或其他格式。在 Django REST framework 中,可以使用 serializers.Serializer
类来创建序列化器。
-- -------------------- ---- ------- ---- -------------- ------ ----------- ---- ------------ ------ ---- ----- --------------------------------------- -- - ---------------------------------------- ---- - ------------------------------------- ----- - ------------------------ ---------- - ----------------------------------------- --- ------------ ---------------- ------ ------------------------------------- --- ------------ --------- ---------------- ------------- - -------------------------- -------------- -------------- - --------------------------- --------------- --------------- ------ --------
这段代码定义了一个 UserSerializer
类,它包含了 User
模型类定义中的字段,并定义了序列化和反序列化的逻辑。
接下来定义类视图:
-- -------------------- ---- ------- ---- -------------------- ------ ------- ---- ----------------------- ------ -------- ---- -------------- ------ ------ ---- ------------ ------ ---- ---- ----------------- ------ -------------- ----- ------------------ --- --------- --------- ----- - ------------------ ---------- - --------------------- ---------- ------ ------------------------- --- ---------- --------- ---------- - --------------------------------- -- ---------------------- ----------------- ------ ------------------------- ------------------------------- ------ --------------------------- ----------------------------------- ----- -------------------- --- --------- -------- ---- ---- - ----------------------- ---------- - -------------------- ------ ------------------------- --- --------- -------- ---- ---- - ----------------------- ---------- - -------------------- ------------------ -- ---------------------- ----------------- ------ ------------------------- ------ --------------------------- ----------------------------------- --- ------------ -------- ---- ---- - ----------------------- ------------- ------ -------------------------------------------
这段代码定义了两个类视图 UserList
和 UserDetail
,分别用于显示和管理用户列表和用户详情。
通过使用 APIView
类和 Response
类,可以轻松地处理 GET、POST、PUT 和 DELETE 请求。
最后,在 urls.py
中添加 url:
from django.urls import path from myapp.views import UserList, UserDetail urlpatterns = [ path('users/', UserList.as_view()), path('users/<int:pk>/', UserDetail.as_view()), ]
使用视图集创建 RESTful API
使用视图集可以更简单地创建 RESTful API,省去了手动编写每个视图函数的麻烦,在一定程度上提高了开发效率。
首先通过定义数据模型和序列化器:
from rest_framework import serializers from myapp.models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = '__all__'
接下来定义视图集:
from rest_framework import viewsets from myapp.models import User from myapp.serializers import UserSerializer class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer
在这个例子中,UserViewSet
继承了 viewsets.ModelViewSet
类,它包含了默认的 CRUD 操作,因此我们就不必再手动编写 GET、POST、PUT 和 DELETE 方法了。
最后,在 urls.py
中添加 url:
-- -------------------- ---- ------- ---- ----------- ------ ----- ------- ---- -------------- ------ ------- ---- ----------- ------ ----------- ------ - ----------------------- ------------------------- ------------ ----------- - - -------- --------------------- -
这样就完成了 RESTful API 的创建,可以通过访问 http://localhost:8000/users/
即可看到用户列表。
认证和权限管理
在设计 RESTful API 时,需要考虑安全性。Django REST framework 提供了很多支持身份验证和权限管理的功能。
认证
认证是确认用户身份的过程。Django REST framework 支持如下认证方式:
- SessionAuthentication
- BasicAuthentication
- TokenAuthentication
- JSONWebTokenAuthentication
要启用认证,请在 settings.py
中添加以下代码:
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.TokenAuthentication', 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', ], }
权限管理
Django REST framework 支持以下权限:
- IsAuthenticated
- AllowAny
- IsAdminUser
- IsAuthenticatedOrReadOnly
- DjangoModelPermissions
- DjangoModelPermissionsOrAnonReadOnly
- DjangoObjectPermissions
要启用权限,请在 settings.py
中添加以下代码:
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], }
开发者可以根据具体需求进行自定义的认证和权限管理。
总结
在本文中,我们介绍了如何使用 Django REST framework 来创建 RESTful API。包括了使用类视图和视图集的方式来创建 API 并提高开发效率。此外,还介绍了如何实现认证和权限管理,使得 RESTful API 可以安全地访问和处理数据。Django REST framework 提供了很多强大的功能,支持 JSON、XML 等多种数据格式,同时还可以扩展其他的格式。通过深入理解 Django REST framework,可以更高效地开发 RESTful API,从而为用户提供更好的体验。
示例代码
示例代码可以通过下面的链接进行查看和下载:
https://github.com/huang-yi/django-restful-api-tutorial
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6469df3a968c7c53b09a91b0