restful规范、drf的安装和简单的使用

前后端开发模式

前后端混合

使用模板语法在后端渲染前端页面

模版语法: dtl:djagno template language

优缺点:
优点:一个人就能完成
缺点:只能用于浏览器网页使用

前后端混合

前后端分离

通过API接口将前后端分离的连接起来

API接口
1.有URI
2.请求方式:get,post,delete
3.请求参数
4.返回格式:json
优缺点
优点:后端人员不用写前端,多种前端都兼容,如:小程序、app
缺点:人员消耗增加

前后端分离

restful规范

restful规范是什么,如何来的?

一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中 的规范
Roy Fielding的博士论文提出的

我们以后接口都要遵循一个规范,restful规范,以下十条

  1. 数据的安全保障
    url链接一般都采用htrps协议传输,它比http安全

  2. 接口特征表现
    url中带api标识,如:
    -https://api.baidu.com/books/
    -https://www.baidu.com/api/books/

  3. 多数据版本共存
    url中版本信息,如:
    https://api.baidu.com/v1/books
    https://www.baidu.com/api/v2/books

  4. 数据即是资源,均使用名词(可复数)
    前后台交互,交互的数据称之为资源
    数据即资源,前后端交互的数据称之为资源,url尽量使用名字,如:
    https://127.0.0.1/api/v1/books/ -->表示对图书操作:增加,删除,查询,修改,都用这一个地址

    不符合规范的:
    https://127.0.0.1/api/v1/get_all_books/
    https://127.0.0.1/api/v1/delete_books/

  5. 资源操作由请求方式决定
    1.get 请求获取数据(获取所有,获取单条)
    2.post 新增数据
    3.delete 删除数据
    https://api.baidu.com/books - get请求:获取所有书
    https://api.baidu.com/books/1 - get请求:获取主键为1的书
    https://api.baidu.com/books - post请求:新增一本书书
    https://api.baidu.com/books/1 - put请求:整体修改主键为1的书
    https://api.baidu.com/books/1 - delete请求:删除主键为1的书

  6. 请求地址中带过滤条件
    只针对于搜索所有接口

  7. 响应状态码(两层)
    http响应状态码:
    1xx:表示请求正在处理,前端一般看不到
    2xx:表示请求处理成功
    3xx:重定向
    4xx:客户端错误
    5xx:服务端出错
    成功都返回200,而在响应体中带状态码,不同的公司code就不一样

  8. 响应体中带错误信息
    {
    “code”: 101,
    “msg”: “用户名或密码错误”
    }

  9. 不同操作,返回格式符合如下标准
    规定:
    GET /collection:返回资源对象的列表(数组)
        - [{name:西游记,price:19},{name:三国,price:19}]
    GET /collection/resource:返回单个资源对象
        - {name:三国,price:19}
    POST /collection:返回新生成的资源对象
        - {name:三国,price:19}
    PUT /collection/resource:返回完整的资源对象
        - {name:三国演绎,price:19}
    DELETE /collection/resource:返回一个空文档

    一般这样做:
    {
    code:100
    msg:查询成功
    restult:规定的
    }

  10. 响应中带链接

序列化与反序列化

序列化: 数据转换格式

序列化反两个阶段:
    序列化:把我们识别的数据转换成指定的格式提供给别人
    例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。

    反序列化:把别人提供的数据转换/还原成我们需要的格式
    例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。


drf安装

drf是一个模块,安装模块djangorestframework

安装模块

  1. django是2版本,用不了drf最新(适当)降版本,他会卸载django,然后装最新4.x
  2. django版本为3.x时就可以使用最新drf

在配置文件中APP注册

INSTALLED_APPS =[
	'rest_framework',
]

drf的使用

  1. 写路由
    在url.py文件中

    from rest_framework.routers import SimpleRouter
    
    router = SimpleRouter()
    router.register('books', BookView, 'books')
    

    然后在urlpatterns

    urlpatterns += router.urls
    
  2. 写视图类

    from rest_framework.viewsets import ModelViewSet
    from .serializer import BookSerializer
    
    
    class BookView(ModelViewSet):
        queryset = Book.objects.all()
        serializer_class = BookSerializer
    
    
  3. 序列化类
    需要在应用里面新建一个py文件,serializer.py

    from rest_framework import serializers
    from .models import Book
    
    class BookSerializer(serializers.ModelSerializer):
        class Meta:
            model = Book
            fields = "__all__"
    
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值