前言
最近啊,我发现了一款号称是下一代高性能的 Api 开发工具,它就是 Hug。
相比 Django、Flask、FastApi 等 Api 开发工具,Hug 到底有何特点和优势呢?
今天我就一起来看上一看。
关于 Hug
Hug 的核心就是极大地简化 Api 的开发,对比 Flask 更加简单。
Hug 的初衷
- 让
Api开发极其简单 - 鼓励程序员编写自我记录的代码
- 快,让开发人员不会因为性能而选择其他框架
- 根据
Hug Api写测试也会变得简单 - 将问题在框架中解决,而不是让用户去解决
- 称为下一代
Api技术的基础
结果就是,
Hug基于Falcon的高性能HTTP框架,仅支持Python@3
实践(看看有多简单)
安装 Hug
pip install hug --upgrade
demo
代码

启动服务

Hug 在本地 8000 端口为我们启动了开发服务器,我们访问http://localhost:8000看看效果

感叹一句,
So Easy!
小彩蛋
上面,我们定义了 happyNewYear 方法是绑定在根路径上的,Hug 允许我们可以不绑定路径。
默认的,
Hug在我们修改代码后会自动Reload。
代码(仅仅去掉了装饰器的路径参数)

访问http://localhost:8000的效果

虽然没有定义路径,但是 Hug 为我们提供了友好的 404,而且告知你可以访问的路径的 URI,请求方式,例子和输出。
我们尝试根据 Hug 的提示修改请求路径为http://localhost:8000/happyNewYear后看看效果

当然,定义路径和不定义路径在同一个方法中是不能混合使用的。
路径参数
和大多数的 Api 框架一样,这些基本功能都是支持的,本文我们仅以 Hug 路径参数用法作为代表展示一下。
代码

效果

Api 版本管理
在 Hug 中对接口版本进行管理和定义特别简单和方便,只要在 Hug 的装饰器中增加 version 参数即可。
代码

效果


如上,利用
Hug我们可以很方便地对Api的版本号进行管理和重构。
测试 Hug Api
上面我们说了 Hug 除了能够让开发简单,也能够让测试简单,现在我们就一起使用 Hug 来测试 Hug。
测试代码
import hug
import demo
from hug import HTTP_200
def testHpny():
'''
@api_or_module: Api模块,即api文件
@url: 即Url,去除host和port的部分
'''
resp = hug.test.get(api_or_module=demo,url='/v1/Python研究所的朋友们')
# 打印影响状态和响应数据
print(resp.status,resp.data)
# 断言
assert resp.status == HTTP_200
assert resp.data != None
if __name__ == '__main__':
testHpny()
执行测试

Hug不但将Api开发变得简单,还将Api的测试集成进来,真正做到了可以让开发者可以快速开发高质量的Api。