丈夫志四海,万里犹比邻。这篇文章主要讲述#yyds干货盘点# RPCRESTGraphQL接口类型概述相关的知识,希望能为你提供帮助。
1. 接口的意义API(Application Programming Interface):应用编程接口, 简称“接口”。
举例:
- 程序如有创建线程,需要调用操作系统的“接口”
- 购物时,如果要清空购物车,调用电商系统的“接口”
- 有一个程序,想要给另一个程序传递数据,需要调用它的“接口”
特点:约定了调用方法,以及预期的行为,但是不透露具体细节
意义:程序能解耦,互通有无
接口很有重要,接口测试也非常有必要。
文章图片
接口测试难度低,收益大,效果号,接口测试很有必要
对于一个系统,如果我们要低成本高质量的进行测试,接口测试的优先的选择。
2. 接口的类型应用级接口:
- RPC
- REST
- GraphQL
PRC (remote procedure call ) 远程过程调用,将其他程序、系统、软件的功能(函数)当作时本程序的功能,进行使用
举个例子:
程序A有函数add,实现加法的功能
程序B想要使用add,需要和A进行交流。
创建API: A和B约定,如有B传递xxxxx 到A,那么A对xxxx进行处理,并返回结果yyyy给B,
RPC用法: 在B中直接调用add
gRPC谷歌开发的高性能,跨语言的PRC组件
使用步骤:
- 定义数据格式 :pb
- 利用grpc组件,根据数据格式生成python代码
- 启动server (拥有add 的程序A)
- 启动client,调用server中的方法
- 安装相关工具
pip install grpciogrpcio-tools
- 定义数据格式
https://developers.google.com/protocol-buffers/docs/overview
//yumi.proto syntax = "proto3"; service Yumi{ rpc add(Request) returns (Response) {} ; }message Request { int32 a = 1; int32 b = 2; }message Response { int32 c = 3; }
- 生成python文件
python -m grpc.tools.protoc--python_out=. --grpc_python_out=. -I. sanmu.proto
sanmu.proto# 协议(数据格式) sanmu_pb2.py# python版的协议 sanmu_pb2_grpc.py # python的grpc (server 和client)
- 启动server
from concurrent import futuresimport grpcimport sanmu_pb2 import sanmu_pb2_grpcclass Sanmu(sanmu_pb2_grpc.SanmuServicer): def add(self, request, context): a, b = request.a, request.b print(f"{a=}, {b=}")c = a + b return sanmu_pb2.Response(c=c)def serve(): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) sanmu_pb2_grpc.add_SanmuServicer_to_server(Sanmu(), server) server.add_insecure_port("[::]:50051") server.start() server.wait_for_termination()if __name__ == "__main__": serve()
- 启动client
import grpcimport sanmu_pb2 import sanmu_pb2_grpcdef add(a: int, b: int) -> int: # 连接到rpc服务器 channel = grpc.insecure_channel("[::1]:50051") # 调用add 服务 stub = sanmu_pb2_grpc.SanmuStub(channel) response = stub.add(sanmu_pb2.Request(a=a, b=b))return response.cprint(add(1, 2))
- 有serve端和client端,自动生成
- 不清楚PRC通信的细节
2.2 REST
REST:软件架构
RESTful :符合REST的风格
RESTfulAPI: 符合REST风格的API
REST 和 RPC正好相反:REST没有提供专用的独立客户端,反倒是要求你对协议细节掌握额度比较清楚。
因为 REST【充分】使用HTTP语义,来描述资源 和对资源的操作:
- 使用 URL 表示 资源
- 使用 METHOD 表示对资源的操作(GET POST)
- 使用 STATUS_CODE 表示对操作的结果
- 数据格式:
- json
- xml
- 表单
- raw
- 请求方法:
- 各种method
- 只是用POST
- 鉴权方式:
- cookies
- basic auth
- api-key
- jwt (json web token)
- OAuth 2.0
swagger 2.0
openapi 3.0
swagger 是API工具集合:
- 接口设计工具
- 接口文档工具
- 接口代码生成工具
2.3 GraphQL
GraphQL是更加强大更加先进,更加灵活的接口类型,更加准确的说它是个查询语言。
GraphQL也是基于HTTP协议的,但是和REST相反:
- 只需要一个URL
- 只需要一个METHOD
- 所有的参数放在body中
VS REST:
- 查询商品分类
- 根据商品分类,查询商品列表
- 根据商品ID,查询商品价格
POST https://demo.saleor.io/graphql/
POST https://demo.saleor.io/graphql/
GITHUB API V3: REST
GITHUB API V4: GraphQL
3. 接口自动化测试思路
文章图片
推荐阅读
- Linux进程和任务管理
- #yyds干货盘点# 6. Python 元组,不可变的列表,滚雪球学 Python
- 用户增长分析模型,该如何搭建
- #yyds干货盘点#数据分析从零开始实战,Pandas读写CSV数据
- 在WordPress中使用ACF的动态字段数( AKA让用户设置他需要多少个字段)
- 动态更改WordPress主题
- 不要在WordPress主题中加载”edits.css”
- DIVI导航栏详细信息
- WordPress是否具有与get_post_meta()相对应的特定页面()