这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战
序列化与反序列化
api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据转换格式,序列化可以分两个阶段,序列化和反序列化的一个非常重要的作用就是能够让不同的编程语言进行数据交互:
序列化:把我们识别的数据转换成指定的格式提供给别人。
例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。
反序列化:把别人提供的数据转换/还原成我们需要的格式。
例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中
Django Rest_Framework安装和简介
该框架的核心思想就是缩减编写API接口的代码,
官方文档:www.django-rest-framework.org/
github: github.com/encode/djan…
Drf框架具备以下几个特点:
- 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;(为了实现前后端分离,如此就无需开发者手动的进行序列化或者反序列化的操作了)
- 提供了丰富的类视图、Mixin扩展类,简化了视图类的编写;(为了简化视图类的编写)
- 丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
- 多种身份认证和权限认证方式的支持包括访问频率、认证权限等;(为了限制用户的访问)
- 内置了限流系统;
- 直观的 API web 界面;
- 可扩展性,插件丰富
安装rest_framework框架
pip install djangorestframework
rest_framework简单使用
该框架是基于django
框架进行使用的,因此在使用drf(django rest framework)
时必须在项目的settings.py
文件INSTALLED_APPS
中添加’rest_framework
’。
至于如何具体使用该框架编写API接口小庄会在后续文章中依次进行介绍,因此如果有看不懂的地方后面的文章会介绍哦~
# 注册应用
INSTALLED_APPS = [
...
'rest_framework',
]
# 在models.py中写表模型
class Book(models.Model):
nid=models.AutoField(primary_key=True)
name=models.CharField(max_length=32)
price=models.DecimalField(max_digits=5,decimal_places=2)
author=models.CharField(max_length=32)
# 新建一个序列化类
from rest_framework.serializers import ModelSerializer
from app01.models import Book
class BookModelSerializer(ModelSerializer):
class Meta:
model = Book
fields = "__all__"
# 在视图中写视图类
from rest_framework.viewsets import ModelViewSet
from .models import Book
from .ser import BookModelSerializer
class BooksViewSet(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookModelSerializer
# 写路由关系
from app01 import views
from rest_framework.routers import DefaultRouter
router = DefaultRouter() # 可以处理视图的路由器
router.register('book', views.BooksViewSet) # 向路由器中注册视图集
# 将路由器中的所以路由信息追到到django的路由列表中
urlpatterns = [
path('admin/', admin.site.urls),
]
#
# router.urls 列表
urlpatterns += router.urls
# 启动,在postman中测试即可
使用rest_framework框架实现API接口的主要步骤
- 将请求的数据(如JSON格式)转换为模型类对象
- 操作数据库
- 将模型类对象转换为响应的数据(如JSON格式)
结语
文章首发于微信公众号程序媛小庄,同步于掘金。
码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)