一个用于快速创建restapi客户端的库。
microclient的Python项目详细描述
微客户机
Microclient是一个库,用于为restapi构建简单的python客户机。在
基本用法:
frommicroclientimportBaseClient,EndpointInfoclassZOOClient(BaseClient):service_name='ZOO API'endpoints=[EndpointInfo("animals",[EndpointInfo("cats","GET"),EndpointInfo("dogs","GET"),EndpointInfo("elephants","GET"),]),EndpointInfo("zoo-status","GET"),EndpointInfo("tickets","GET, POST, DELETE")]
也就是说客户是这样的:
^{pr2}$目前,可以在客户端初始化时通过Auth Token进行授权:
zoo_client=ZooClient('http://localhost:8000',auth='some_token')
令牌将被附加到每个请求头。默认情况下,授权头前缀是Token
,但可以这样设置:
zoo_client=ZooClient('http://localhost:8000',auth='some_token',auth_prefix="Bearer")
将发送如下标题:
"Authorization": "Bearer some_token"
回应
在微客户机上调用的每个端点都将返回LazyResponse
对象,顾名思义,它是延迟加载的。Lazy Response
有三个最重要的主要属性:
data
(最好是JSON响应数据,但在解码失败时将回退到字节字符串内容)、status
(整数状态代码)和{
目前微客户机只处理json数据(请求和响应)。在
测试
如果您想在不实际调用底层API的情况下对客户机进行单元测试,请使用LazyResponse
属性检查发送的端点、方法和数据是否正确。
示例:
zoo_client=ZooClient('http://localhost:8000')response=zoo_client.animals.cats()print(response.url,response.method,response.request_data)# http://localhost:8000/animals/cats, GET, None response=zoo_client.tickets.post(data={'amount':2})print(response.url,response.method,response.request_data)# http://localhost:8000/tickets, POST, {'amount': 2}
取消通知:
在以前版本的微客户机中,您还可以使用debug
测试相同的东西,在实际调用和测试客户机之间切换。
示例:
zoo_client=ZooClient('http://localhost:8000')zoo_client.debug=Trueprint(zoo_client.animals.cats())# (http://localhost:8000/animals/cats, GET, None) print(zoo_client.tickets.post(data={'amount':2}))# (http://localhost:8000/tickets, POST, {'amount': 2})
但是,debug
属性从版本1.0开始将不可用(可能在几个月内),建议切换到LazyResponse
方法。在
标题
标题可以附加在4个级别上:
- 全局-将附加到此客户端发出的每个请求:
classZOOClient(BaseClient):service_name='ZOO API'global_headers={"Content-Type":"application/*"}endpoints=[EndpointInfo("animals","GET")]
- 在一组端点上:
classZOOClient(BaseClient):service_name='ZOO API'endpoints=[EndpointInfo("animals",[EndpointInfo("cats","GET"),EndpointInfo("dogs","GET"),EndpointInfo("elephants","GET"),],headers={"Content-Type":"application/*"}),# Every endpoint inside 'animals' will append these headers ('animals' itself included)]
- 在单个端点上:
classZOOClient(BaseClient):service_name='ZOO API'endpoints=[EndpointInfo("animals",[EndpointInfo("cats","GET",headers={"Content-Type":"application/*"}),EndpointInfo("dogs","GET"),EndpointInfo("elephants","GET"),]),]
- 一次请求:
zoo_client=ZooClient('http://localhost:8000')response=zoo_client.animals.cats(headers={"Content-Type":"application/*"})
变更日志
v0.7.4版:
- 日志记录会截断长字符串(url除外),因此不会淹没控制台。在
v0.7.3版:
- 仅在like params格式设置为固定值时提供like params。例子:
{"param1": None, "param2": ''}) -> ''
。以前是{"param1": None, "param2": ''}) -> '?'
v0.7版:
- 添加了对单个请求、单个端点、内部端点(端点组)和客户端全局的标头支持。在
- 为每个请求添加了定时诊断(在
LazyResponse
中的request_time
属性中提供) - 修正了IDE可能指出
resource_id
参数必须是str
的错误。在
- 项目
标签: