python测试开发django-59.restful接口开发

前言

REST 不是什么具体的软件或者代码,而是一种思想。现在流行前后端分离开发项目,一般用 json 来交换数据。
相信写过模板的同学都知道,只要哪怕页面中的数据有一丝丝变动,那整个页面都需要重新渲染,这对性能无疑是巨大的浪费,并且页面中只有一些元素会和数据相联系,
比如列表中的

  • 元素,如果数据有变化,能直接只更新
  • 元素就好了,REST 就是为此而生。

    REST简介

    什么是RESTful 面向资源?

    先看REST是什么意思,英文Representational state transfer 表述性状态转移 其实就是对 资源 的表述性状态转移。
    简单的说:RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构。

    资源的地址 在web中就是URL (统一资源标识符)
    资源是REST系统的核心概念。 所有的设计都是以资源为中心

    结合项目怎么识别资源
    1.商品加入购物车 购物车
    2.提交订单 订单
    3.创建用户 用户

    围绕资源进行 添加,获取,修改,删除,以及对符合特定条件的资源进行列表操作 。针对资源设计接口

    关于规范与约束有哪些?

    RESTful 架构的核心规范与约束:统一接口
    分为四个子约束:
    1.每个资源都拥有一个资源标识,每个资源的资源标识可以用来唯一地标明该资源
    2.消息的自描述性
    3.资源的自描述性。
    4.HATEOAS Hypermedia As The Engine Of Application State(超媒体作为应用状态引擎)
    即客户只可以通过服务端所返回各结果中所包含的信息来得到下一步操作所需要的信息,如到底是向哪个URL发送请求等。也就是说,一个典型的REST服务不需要额外的文档标示通过哪些URL访问特定类型的资源,而是通过服务端返回的响应来标示到底能在该资源上执行什么样的操作

    目的:实现客户端无需借助任何文档即能调用到所有的服务器资源

    基本实现

    先安装对应的模块

    pip install djangorestframework
    pip install django-filter

    在setting.py中加入配置参数

    INSTALLED_APPS = (
        ...
        'rest_framework',
    )

    models.py

    class Card(models.Model):
        '''银行卡 基本信息'''
        card_id = models.CharField(max_length=30, verbose_name="卡号", default="")
        card_user = models.CharField(max_length=10, verbose_name="姓名", default="")
        add_time = models.DateField(auto_now=True, verbose_name="添加时间")
    
        class Meta:
            verbose_name_plural = '银行卡账户'
            verbose_name = "银行卡账户_基本信息"
    
        def __str__(self):
            return self.card_id

    views.py

    from rest_framework import viewsets
    from rest_framework import serializers
    from .models import *
    from django.http import QueryDict
    from rest_framework.request import Request
    def get_parameter_dic(request, *args, **kwargs):
        if isinstance(request, Request) == False:
            return {}
    
        query_params = request.query_params
        if isinstance(query_params, QueryDict):
            query_params = query_params.dict()
        result_data = request.data
        if isinstance(result_data, QueryDict):
            result_data = result_data.dict()
    
        if query_params != {}:
            return query_params
        else:
            return result_data
    
    class CardSerializer(serializers.HyperlinkedModelSerializer):
        class Meta:
            model = Card
            fields = "__all__"
    
    class CardViewSet(viewsets.ModelViewSet):
        queryset = Card.objects.all()
        serializer_class = CardSerializer
    
        def get(self, request, *args, **kwargs):
            params=get_parameter_dic(request)
            return JsonResponse(data=params)
    
        def post(self, request, *args, **kwargs):
            params=get_parameter_dic(request)
            return JsonResponse(data=params)
    
        def put(self, request, *args, **kwargs):
            params=get_parameter_dic(request)
            return JsonResponse(data=params)

    urls.py

    from django.conf.urls import include
    from hello import views
    from rest_framework import routers
    
    router = routers.DefaultRouter()
    router.register(r'books', views.BookViewSet)
    
    urlpatterns = [
        url(r'^', include(router.urls)),
    ]

    测试接口

    使用fiddler测试刚才写的接口

    get查看数据

    发送get请求:http://127.0.0.1:8000/cards/

    数据库表里面数据为空

    post提交数据

    发送post请求:http://127.0.0.1:8000/cards/

    提交成功后,查看数据库,会发现新增了一条数据

    查看数据

    可以多新增几个,查看所有的数据

    只查看其中的一条数据,后面加上它的id,http://127.0.0.1:8000/cards/65/

    编辑数据

    编辑数据,发送put请求,后面接上它的id

    删除数据

    删除数据,用delete请求,后面接上它的id

    删除之后,刚才这个数据就没有了

    原文地址:https://www.cnblogs.com/yoyoketang/p/11504177.html

    时间: 2024-08-25 02:40:50
  • python测试开发django-59.restful接口开发的相关文章

    python的flex服务端数据接口开发

    python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted有很好的异步机制. 下面的我写的一个简单的验证用户的python服务端: ______________________________DBServer.py # Copyright (c) 2009-2010 The Newjh Project."""@author: Roy@s

    PHP九大接口视频教程( 支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套)

    PHP九大接口视频教程(  支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套) 需要的联系我:QQ: 1844912514 PHP九大接口视频教程(  支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套) 需要的联系我:QQ: 1844912514 原文地址:https://www.cnblogs.com/lxwphp/p/9426625.html

    【Python】djangorestframework 基于django框架的接口开发

    官网:http://www.django-rest-framework.org/#installation 下载:https://pypi.python.org/pypi/djangorestframework/3.3.3 参考:http://www.cnblogs.com/holbrook/archive/2012/02/19/2358704.html 参考:http://www.weiguda.com/blog/18/ 参考:http://blog.csdn.net/rongyongfeik

    夺命雷公狗---微信开发54----微信js-sdk接口开发(1)之快速入门

    js-sdk基本介绍 除去服务号的九大接口外,微信提供了JS-SDK接口,所谓JS-SDK接口也就是在网页中使用javascript来更改网页设置, (比如隐藏右上角的菜单)获取用户状态(比如地理位置)甚至调用微信的录音功能上传下载和扫描等功能, 由于需要用到JS代码,因此该接口只能在开发模式下使用. 我们还是照老规矩,先查看手册 JS-SDK快速入门体验案例: 我们来实现一个简单的小功能,通过js-sdk接口,灵活的控制右上角菜单的显示和隐藏 我们先来看看手册: 我们将上一节课的dream.p

    java web开发(二) 接口开发

    java web开发(一) 环境搭建讲解了如何搭建基础项目,如果你还没了解,可以先去看看!今天我们就来看看接口的开发,打算使用比较古老的或者说比较原始方法实现的接口. 一.数据库设计. 我打算做一个简单的学生信息管理系统,数据库名为students_manage,并且先设计一张学生表,表名为student. 1.打开Sqlyong工具,如果还没创建连接,可以点击新建,输入名称,点击确定即可, 2.然后在保存的连接中选择,刚刚新建的连接,只需要在密码输入框中输入,安装数据库时的设置的密码,点击连接

    2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20:30-22:30 报名费:报名费2000一人(周期2个月) 联系QQ:283340479 课表如下 课程主要涉及的内容: 1.httprunner框架以及web平台做接口自动化测试 (装逼必备) 2.django平台开发 (python开发必会) 3.pytest框架结合selenium做web自动化测试 (

    关于《Web接口开发与自动化测试--基于Python语言》

    关于封面logo 首先,你会被书封上面logo吸引,这么炫酷?双蛇杖?嗯,这是Requests的新logo. 旧的logo是一只乌龟. 新logo是双蛇杖: 看到新logo我首先想到的是 火爆全网页游 “大天使之剑”,直到前两天一位网友告诉我这是双蛇杖,然后,我百度了一下双蛇杖的神话故事.然后,找到了Requests库开发者的一次提交,有人说喜欢旧logo,然后,得到的答复是:“This represents the peace Requests brings between the serve

    《Python高效开发实战》实战演练——开发Django站点1

    6.2 实战演练:开发Django站点 用Django开发网站需要遵循Django的一套开发流程.本节通过建立一个消息录入页面演示Django的开发流程及相关技术. 6.12.1  建立项目 在进行Django开发之前需要先用django-admin建立Django项目,语法如下: #django-adminstartproject 站点名称 其中django-admin是安装好Django组件后在Python目录中生成的django项目管理工具.比如,建立一个叫djangosite的开发项目:

    API接口开发 配置、实现、测试

    Yii2 基于RESTful架构的 advanced版API接口开发 配置.实现.测试 环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_rewrite.so 将其前面的#去掉,如果没有找到则添加进去. 找到一下代码 <Directory "C:/phpStudy/Apache/cgi-bin"> AllowOverride