首页 > 其他分享 >1.drf入门

1.drf入门

时间:2024-08-01 10:40:08浏览次数:6  
标签:baidu 入门 api books https import com drf

【一】WEB应用模式

1)前后端开发模式

  • 前后端混合模式图

image-20240724171328471

  • 前后端分离模式图

image-20230514233552329

【二】API接口

1)概念

  • 规定了前后台信息交互规则的 url 链接,也就是前后台信息交互的媒介

2)四大特点

  • url :url链接
  • 请求方式:get、post、put、patch、delete
  • 请求参数:json 或 xml 格式的 key-value 类型数据
  • 响应结果:json或xml格式数据

【三】接口测试工具

# postman官网
https://www.postman.com/
    
# Apifox官网
https://apifox.com/
# Apifox = Postman + Swagger[接口文档] + Mock[模拟测试数据] + JMeter[压测工具]

image-20240724121411519

【四】restful规范

1)10条规范

1.数据的安全保障(url链接一般采用https)

  • https 相较于 http 更安全

2.接口中带api表示

  • 出现api字眼就代表请求url链接是完成后台数据交互的

  • https://api.baidu.com
    https://www.baidu.com/api
    

3.接口中带版本标识

  • https://api.baidu.com/v1
    https://api.baidu.com/v2
    

4.数据即是资源,一般使用名词(可复数)

  • https://api.baidu.com/users
    https://api.baidu.com/books
    https://api.baidu.com/book
    

5.资源操作由请求方式决定(增删改查)

  • https://api.baidu.com/books
    # post请求:新增一本书书
    https://api.baidu.com/books
    # get请求:获取所有书
    
    https://api.baidu.com/books/1
    # get请求:获取主键为1的书
    https://api.baidu.com/books/1
    # put请求:整体修改主键为1的书
    https://api.baidu.com/books/1
    # patch请求:局部修改主键为1的书
    https://api.baidu.com/books/1
    # delete请求:删除主键为1的书
    

6.请求地址中带过滤条件

  • https://cn.bing.com/search?q=微博
    

7.响应状态码

  • http响应状态码

    • 临时响应:1xx

    • 正确响应:2xx

    • 重定向响应:3xx

    • 客户端异常:4xx

    • 服务端异常:5xx

8.响应中带错误信息

  • {code:101,msg:"用户名密码错误"}
    {code:100,msg:"成功"}
    

9.服务器向用户返回结果 的规范

  • GET /collection:返回资源对象的列表(数组)  
    # [{name:红楼梦,price:20},{name:西游记,price:30}]
    GET /collection/resource:返回单个资源对象
    # {name:红楼梦,price:20}
    POST /collection:返回新生成的资源对象
    PUT /collection/resource:返回完整的资源对象
    PATCH /collection/resource:返回被修改的属性
    DELETE /collection/resource:返回一个空文档
    

10.返回数据总带url链接

2)总结

# 响应数据要有状态码、状态信息以及数据本身
{
    "status": 0,
    "msg": "ok",
    "results":[
        {
            "name":"肯德基(罗餐厅)",
            "location":{
                "lat":31.415354,
                "lng":121.357339
            },
            "address":"月罗路2380号",
            "province":"上海市",
            "city":"上海市",
            "area":"宝山区",
            "street_id":"339ed41ae1d6dc320a5cb37c",
            "telephone":"(021)56761006",
            "detail":1,
            "uid":"339ed41ae1d6dc320a5cb37c"
        },
        ...
    ]
}

【五】序列化与反序列化

1)序列化

  • 将我们识别的数据(字典、列表、对象)转换成指定的格式(json格式字符串、pickle二进制)提供给别人
  • 在django中获得的数据默认是模型对象(queryset对象),但模型对象数据无法直接提供给前端或别的平台使用,须将数据进行序列化,变为json格式字符串,提供别人使用

2)反序列化

  • 将别人提供的数据(json格式字符串、pickle二进制)转换成我们需要的格式(字典、列表、对象)

  • 前端js提供的json数据,对于python而言是字符串,须进行反序列化转换成模型对象,才能将数据保存到数据库中

【六】drf安装和快速使用

1)概念

django rest framwork
是django框架上一个可以快速实现restful规范接口的快速开发框架
# 安装
pip install djangorestframework

2)使用示例

  • app . models
from django.db import models

class Book(models.Model):
    name = models.CharField(
        verbose_name="书名",
        max_length=32
    )
    price = models.IntegerField(
        verbose_name="价格"
    )
  • Django . url
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/', include('App.urls'))
]
  • app . url
from django.contrib import admin
from django.urls import path
from .views import BookView
from rest_framework.routers import SimpleRouter

router = SimpleRouter()
router.register('books',BookView,'books')

urlpatterns = [
]
urlpatterns += router.urls
  • app . views
from django.shortcuts import render
from .models import Book
from .serializer import BookSerializer
from rest_framework.viewsets import ModelViewSet

class BookView(ModelViewSet):
    serializer_class = BookSerializer
    queryset = Book.objects.all()
  • 在 app 内创建 serializer.py
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = '__all__'

标签:baidu,入门,api,books,https,import,com,drf
From: https://www.cnblogs.com/Mist-/p/18336155

相关文章

  • JavaScript入门须知
    一、JavaScript概念1.javascript是一门跨平台,面向对象的脚本语言,用来控制网页行为,可使网页交互2.java和js完全不一样,无论是概念还是设计都是完全不一样的,但是它们的基础语法相似。3.在1995年由BrendanErich发明,于1997年成为ECMA的标准4.ECMA欧洲协会标准,ECMAScript(ES6)是......
  • ctfshow-web入门-sql注入(web171-web175)
    目录1、web1712、web1723、web1734、web1745、web1751、web171单引号测一下,报错 --+闭合后回显正常 也可以用#,不过需要URL编码成功闭合之后,先判断下字段数:1'orderby3--+3的时候正常 4的时候报错,说明只有3列  测了一下,三个回显位都能正......
  • Python爬虫入门03:用Urllib假装我们是浏览器
    文章目录引言Urllib库简介Request模块详解Error模块与异常处理Parse模块与URL解析Robotparser模块模拟浏览器请求使用Request方法添加请求头信息代码示例1.设置请求URL和请求头2.定义请求参数并转换为适当的格式3.使用Request方法封装请求4.发送请求并获取响应常用......
  • 书生大模型实战营闯关 - 入门岛 - Linux
    学习目标:掌握在InternStudio 使用远程开发机Linux环境的方法。学习内容:提示:这里可以添加要学的内容例如:ssh连接设置完成端口映射并运行`hello_world.py` 进入开发环境一些新学习的Linux指令test.shshell 脚本编写作业内容:1. SSH连接ssh-keygen-trsa在合适......
  • 如何用3个月零基础入门网络安全?
    前言写这篇教程的初衷是很多朋友都想了解如何入门/转行网络安全,实现自己的“黑客梦”。文章的宗旨是:1.指出一些自学的误区2.提供客观可行的学习表3.推荐我认为适合小白学习的资源.大佬绕道哈!一、自学网络安全学习的误区和陷阱1.不要试图先成为一名程序员(以编程为基础......
  • Java入门基础-11面向对象高级(二)
    Java入门基础-11面向对象高级(二)本章知识点总结于黑马程序员的视频课程:《Java入门基础课程》,是对上课做的笔记Java入门基础课程视频地址Java入门基础-10面向对象高级目录Java入门基础-11面向对象高级(二)前言面向对象的三大特征之三:多态认识多态使用多态的好处、类型......
  • Spring框架 配置Gateway网关/spring cloud gateway 基础入门案例教程
    文章目录目录文章目录安装流程小结概要安装流程技术细节小结概要网关作为微服务集群唯一的对外入口,可以实现很多功能.例如:统一的解决跨域(一个ajax请求origin域名和请求目标url中域名不同,ip不同,域名不同,端口不同,都会引发的问题)问题.统一的身份认证.认证解......
  • ctfshow-web入门-nodejs系列
    web334下载源码后缀改为zip打开即可先对源码经行一个简单的分析login.js//引入Express框架varexpress=require('express');//创建一个路由实例varrouter=express.Router();//引入用户数据,假设user模块导出的是一个包含用户项的对象varusers=require('../m......
  • 全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函
    全网最适合入门的面向对象编程教程:29类和对象的Python实现-断言与防御性编程和help函数的使用摘要:在Python中,断言是一种常用的调试工具,它允许程序员编写一条检查某个条件。本文主要介绍了断言的应用场景和特点以及assert语句的使用,同时介绍了防御性编程和help()函数......
  • Python入门知识点 10--闭包与装饰器
    一、直接与间接程序开发潜规则生活中:   有台电脑,他的硬盘空间不够了,里面的资料我不能动,也不能删,咋办   1.加装硬盘--直接解决--前提是我的电脑能加装   2.插个u盘--间接解决-->没有特别的要求,比较灵活   开发潜规则:   代码拓展-->开放-->可......