栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

RESTful笔记

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RESTful笔记

目录

1.RESTful概念:

2.RestFul 规范建议

1.API与用户的通信协议,总是使用HTTP协议

2.域名

3.版本

4.面向资源编程

5.method

常见的http请求方法

对应增删改查操作

6.过滤,分页,排序

7.状态码

常见的http请求状态码

3.使用APIView

DRFT特点:

view使用

APIView使用

ModelViewSet使用

获取参数

序列化器(serializers.ModelSerializer)

序列化器(serializers.Serializer)


1.RESTful概念:

REST与技术⽆关,代表的是⼀种软件架构⻛格(REST是Representational State Transfer的简称,中⽂翻译为“表征状态转移”)

REST从资源的⻆度类审视整个⽹络,它将分布在⽹络中某个节点的资源通过URL进⾏标识

所有的数据,不过是通过⽹络获取的还是操作(增删改查)的数据,都是资源,将⼀切数据视为资源REST区别与其他架构⻛格的最本质属性

1.web开发本质

对数据库中的表进⾏增删改查操作

Restful⻛格就是把所有数据都当做资源,对表的操作就是对资源操作

在url同通过 资源名称来指定资源

通过 get/post/put/delete/patch 对资源的操作

2.RestFul 规范建议
  • 1.API与用户的通信协议,总是使用HTTP协议

  • 2.域名

1)子域名方式

http://api.example.com

http://www.example.com

2)url方式

http://.example.org

http://example.org/api/

  • 3.版本

URL,如:https://api.example.com/v1/

请求头 跨域时,引用发送

  • 4.面向资源编程

https://api.example.com/vi/zoos

https://api.example.com/vi/animals

https://api.example.com/vi/employees

  • 5.method

常见的http请求方法

get 获取资源【查询数据】:从服务器取出资源

post 提交数据【创建数据】:在服务器新建一个资源

put 修改数据【修改数据】(要确定修改的对象,获取要修改的对象的id):在服务器更新资源客户端提供改变后的完整资源

delete 删除资源【删除数据】,(要确定删除的对象):从服务器删除资源

patch:修改属性:在服务器更新资源客户端提供改变的属性

对应增删改查操作

head:获取资源的元数据

option:获取信息,关于资源哪些属性是客户端可以改变的

patch:在服务器更新资源

  • 6.过滤,分页,排序

http://api.example.com/vl/zoos?limit=10:指定返回记录的数量

http://api.example.com/vl/zoos?offset=10:指定返回记录的开始位置

http://api.example.com/vl/zoos?page=2&per_page=100:指定第几页,以及眉页的记录数

http://api.example.com/vl/zoos?sortby=name&order=asc:返回结果按照哪个属性排序,以及排序顺序animal_type_id=1:指定筛选条件

http://api.example.com/vl/zoos?

  • 7.状态码

常见的http请求状态码

200 成功

201 创建和修改成功

202 一个任务进入队列,一个请求进入后台排队

204 删除成功

301 永久重定向

302 临时重定向

400 请求的数据是坏的

401 没有权限,认证失败

403 认证失败,访问时被禁止的

404 请求页面不存在(路由错误)

405 请求方式不正确,本应是get而发送了post请求,就会提示405

406 用户请求的资源不可能

410 用户请求的资源被永久删除

422 当创建一个对象,发生验证错误

500 服务器内部错误

501 服务器不支持请求功能,无法完成请求

3.使用APIView

DRF框架:drf框架是基于Django框架,用于快速构建Web RESTful API的工具。

1:序列化:将对象转化成“串行化”数据形式。

DRF: 模型类对象—> 字典----> json数据

2:反序列化: 将"串行化"数据转换成对象。

DRF : json字符串 —>字典—> 数据校验(产生有效数据)—> 模型类对象

DRFT特点:
  1. 提供定义序列化器Serializer的方法,可以快速根据Django ORM或者其他库自动序列化、反序列化

  2. 提供丰富的类视图、MIXIN扩展类,根据需求组合继承,简化视图的编写

  3. 丰富的定制层级:函数试图,类试图,试图集合到自动生成API,满足各种需求

  4. 支持多种身份认证和权限认证方式

  5. 内置了限流系统

  6. 可视化AOI接口

  7. 可扩展性,插件丰富

视图封装:DRF统一封装了请求的数据为request.data以及返回数据Response方法

序列化器:DRF提供序列化器可以统一便捷地进行序列化及反序列化工作

认证:对用户权限进行认证,超级用户,普通用户,匿名用户

限流:对访问的用户流量进行限制,减轻接口的访问压力

过滤:可以对列表数据进行字段过滤,并可以通过添加django-fitlter扩展来增强支持

排序:来帮助我们快速指明数据按照指定字段进行排序

分页:可以对数据集进行分页处理

异常处理:*DRF*提供了异常处理,我们可以自定义异常处理函数

接口文档生成:*DRF*还可以自动生成接口文档

DRF官方文档

中文文档: Home - Django REST framework 中文站点

英文文档: Home - Django REST framework

view使用
from rest_framework.views import APIView from rest_framework.response import Response

APIView使用
from rest_framework.views import APIView from rest_framework.response import Response 

ModelViewSet使用
from rest_framework.viewsets import ModelViewSet

获取参数
# get 
data = request.query_params 
# post 
data = request.data

序列化器(serializers.ModelSerializer)
class Ser(serializers.ModelSerializer):    
    class meta:        
        model = 表名        
        fields = '__all__'

序列化器(serializers.Serializer)
class StuSer(serializers.Serializer):    
    字段名= serializers.IntegerField()    
    字段名= serializers.CharField(max_length=64, required=True)    
    字段名= serializers.IntegerField(default=18)    
    字段名= serializers.CharField(default='中国', max_length=64)    
    字段名= serializers.CharField(max_length=64)        
    # 创建    
    def create(self, validated_data):        
        return 表名.objects.create(**validated_data)        
    # 修改    
    def update(self, instance, validated_data):                     instance.字段名= validated_data.get('字段名')        
         instance.字段名= validated_data.get('字段名')                instance.字段名= validated_data.get('字段名')        
         instance.字段名= validated_data.get('字段名')        
         instance.save()        
      return instance

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269816.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号