一、前后端开发模式
# 以前开发项目是前端写好静态文件 然后后端再用模板语法套到这个静态文件中 之后衍生出了全栈开发 就是前端后端都一个人写 # 然就现在逐渐开始前后端分离开发项目 后端人员只需要写接口(API接口), 使用postman测试 前端人员只需要写前端,写的过程中使用mock数据 最后前后端联合测试即可
二、API接口
# 通过网络,规定前后端交互规则的url链接,也就是前后端交互的媒介 # 之前写的点赞点踩功能就是一个api接口 # API接口的样子 -url:长得像返回数据的url链接 https://api.map.baidu.com/place/v2/search -请求方式:get、post、put、patch、delete 采用get方式请求上方接口 -请求参数:json或xml格式的key-value类型数据 ak:6E823f587c95f0148c19993539b99295 region:上海 query:肯德基 output:json 响应结果:json或xml格式的数据 -响应结果:json或xml格式的数据
三、接口测试工具postman
后端人员写好接口后 是需要测试,因为没有页面所以不可能在页面上测试,所以需要接口测试工具:postman
postman本质就是模拟发送http请求
测试接口的工具有很多不止postman
去官网下载即可:https://www.postman.com/downloads/
安装也很方便只需双击即可
1.postman简介
基于网络发送的编码格式有三种:
默认的urlencoded, form-data,json格式
而postman中都有
而且可以发送任意请求
四、restful规范
REST全称是Representational State Transfer,中文意思是表述:表征性状态转移, 它首次出现在2000年Roy Fielding的博士论文中
RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中
restful规范有10点规范,不过公司也有自己的风格规范
# 1 一般使用https协议 数据交互 http+tsl/ssl=https 比http更安全,交互是加密传输 交互用json>>>如果很容易被截获>>>明文显示给别人,数据不安全 所以要使用https数据交互 # 2 接口地址中带api标识 https//api.baidu.com/books 域名中 https//www.baidu.com/api 地址中 # 3 接口地址中带版本标识 https://api.baidu.com/v1 v1版本 https://api.baidu.com/v2 v2版本 就是一个应用软件更新之后 地址需要匹配携带版本的标识 一个给老版本用一个给新版本用 # 4 数据即是资源, 均使用名词, 不要使用动词 eg:删除图书接口 好的: https://api.baidu.com/v1/books 不好的: https//api.baidu.com/v1/delete-books 新增图书: https://api.baidu.com/v1/books # 5 资源操作由请求方式决定 -新增图书: https://api.baidu.com/v1/books post请求 -删除图书: https://api.baidu.com/v1/books delete请求 -修改图书: https://api.baidu.com/v1/books put请求 -获取图书: https://api.baidu.com/v1/books get请求 # 6 地址中带搜索条件 https://api.baidu.com/v1/zoos?animal_type_id=1 指定筛选条件 https://api.baidu.com/v1/books?name=红楼梦 # 7 想要状态码 -http的响应状态码 1xx 请求正在处理 2xx 成功 200 请求成功 201 创建成功 3xx 重定向 301 和 302 >>>301与 302的区别>>一个是永久重定向 一个是临时重定向 4xx 客户端错误 403 和 404>>> 403:没有权限 404:地址不存在 5xx 服务端错误 响应中带状态码 {code:10000} # 8 响应中带错误信息 {code:999, msg: 登入失败} # 9 针对不同操作,服务端向用户返回的结果应该符合一下规范 GET /collection:返回资源对象的列表(数组) -[{name:红楼梦,price:12},{name:西游记,price:12}] GET /collection/resource:返回单个资源对象 -{name:红楼梦,price:12} POST /collection:返回新生成的资源对象 -{name:红楼梦,price:12} PUT /collection/resource:返回完整的资源对象 -{name:红楼梦,price:12} PATCH /collection/resource:返回完整的资源对象 -{name:红楼梦,price:12} DELETE /collection/resource:返回一个空文档 - # 10 响应中带链接地址 "img": "https://image.baidu.com/kfc/001.png"
五、序列化与反序列化
api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据转换格式,序列化可以分两个阶段: # 序列化: 把我们识别的数据转换成指定的格式提供给别人。 -python后端: python的对象、字典、列表 -前端:字符串、json格式字符串 -把我们能识别的格式>>>转成别人能识别的格式给他 -例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。 # 反序列化:把别人提供的数据转换/还原成我们需要的格式。 -前端:字符串、json格式字符串 提交给我们 -python后端:把json格式字符串转成我们能够识别的格式:字典,对象,queryset对象 -例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。 # 前后端分离开发中>>>>站在后端开发的角度 -序列化>>> read(别人读我的数据) >>>出>>>后端给前端 -反序列化>>> write(别人给我的数据)>>存到数据库 >>>进>>>前端给后端
六、drf的快速使用
# drf的全称是 djangorestframework 它是django的一个app(第三方插件) 只能使用django框架上 # 可以帮助我们快速的写出符合restful固定的接口 # 现在我们可以写一个书籍的增删改查的功能 # 基于drf写五个接口 -获取所有 get -获取单个 get -新增一条 post -修改一条 put/patch -删除一条 delete
1.路由层(url)
from django.contrib import admin from django.urls import path from rest_framework.routers import SimpleRouter from app01 import views router = SimpleRouter() router.register('books', views.BookView) urlpatterns = [ path('admin/', admin.site.urls), ] urlpatterns += router.urls
2.视图层(view)
from .models import Book from rest_framework.viewsets import ModelViewSet from .serializer import BookSerializer class BookView(ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer
3.模型层(model)
from django.db import models class Book(models.Model): name = models.CharField(max_length=32) price = models.CharField(max_length=32) publish = models.CharField(max_length=32)
4.序列化
from rest_framework import serializers from .models import Book class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = '__all__'
然后就可以通过postman测试这五个接口是否正常
标签:baidu,接口,api,https,序列化,com,API From: https://www.cnblogs.com/stephenwzh/p/16724227.html