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