首页 > 其他分享 >API接口

API接口

时间:2022-09-23 21:14:39浏览次数:91  
标签:baidu 接口 api https 序列化 com API


一、前后端开发模式

# 以前开发项目是前端写好静态文件 然后后端再用模板语法套到这个静态文件中 之后衍生出了全栈开发 就是前端后端都一个人写 

# 然就现在逐渐开始前后端分离开发项目
后端人员只需要写接口(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

相关文章

  • API接口与drf规范
    前后端开发模式1.前后端混合前端写好静态html页面,后端使用模板语法进行渲染,然后在在对接,遇到问题返回给前端进行修改,这要求后端人员会一些HTML、JS等前端语言,这种模式让......
  • 接口基础
    1、什么是API接口?简单来说,接口就是系统或模块之间相互连接的部分,就称为接口。在软件测试中,我们可以理解为url就是一个接口,如:https://www.baidu.com/由客户端(浏览器)发......
  • 前后端开发模式、API接口、接口测试工具postman、restful规范、序列化和反序列化、dja
    目录前后端开发模式一、两种模式1.传统开发模式:前后端混合开发1.1.缺点:2.前后端分离开发模式2.1.特点3.补充老刘的相关博客:二、API接口1.作用2.说明三、接口测试工具postm......
  • 今日内容 API接口和drf的使用
    前后端开发模式详细见博客链接:https://www.cnblogs.com/liuqingzheng/p/10900502.html补充:前后端混合开发使用模板语法渲染模板后端人员要通过前端写好的html页面......
  • 集合.Set子接口
    Set子接口特点:无序、无下标、元素不可重复方法:全部继承自Collection中的方法Set实现类HashSet【重点】:基于HashCode实现元素不重复当存入元素的哈希码相同时,会调......
  • 【C#】接口的基本概念
    目录基本什么是接口接口与抽象类的区别抽象类接口实例设计接口基本什么是接口C#接口(interface)是:用来定义一种程序的协定实现接口的类或者结构要与接口的定义严格一致。......
  • Feign调用第三方http接口 (摘抄)
    我们平常在开发的时候,经常会碰到调用第三方的接口,这个时候我们可以使用httpClient或者restTemplate,但是这两种方式相比较与Feign调用,都会麻烦一点儿。Feign是声明式服务调......
  • layui 数据表格使用python django提供的数据接口
    数据库新建表 fromdjango.dbimportmodels#Createyourmodelshere.classHost(models.Model):hostname=models.CharField(max_length=32,verbose_name......
  • 微服务系列之Api文档 swagger整合
    1.前言微服务架构随之而来的前后端彻底分离,且服务众多,无论是前后端对接亦或是产品、运营翻看,一个现代化、规范化、可视化、可尝试的文档是多么重要,所以我们这节就说说......
  • API接口、接口测试工具postman、restful规范、序列化与反序列化、djangorestframework
    API接口通过网络,规定了前台后台信息交流规则的url链接,也就是前后台信息交互的媒介API接口的样子url:长得像返回数据的url链接https://api.map.baidu.com/place/v2/s......