Hug 使API开发尽可能简单 | 您所在的位置:网站首页 › embrace与hug › Hug 使API开发尽可能简单 |
Hug的目标是使开发Python驱动的API尽可能简单,但并不简单。因此,它极大地简化了Python API开发 Hug的设计目标: 使开发Python驱动的API与书面定义一样简洁 框架应该鼓励编写自我文档代码 它应该是快的。出于性能原因,开发人员永远不会觉得有必要寻找其他地方。 为在Hug之上编写的API编写测试应该是简单而直观的 在API框架中只做一次比将问题集推给API框架的用户要好 成为下一代Python API的基础,采用最新技术作为这些目标的结果,Hug仅支持Python3+,并且是在此基础上构建的Falcon's高性能HTTP库 Get professionally supported hug with the Tidelift Subscription 拥抱的专业支持是作为Tidelift SubscriptionTidelift为软件开发团队提供了购买和维护软件的单一来源,并由最了解该技术的专家提供专业级别保证,同时与现有工具无缝集成 安装拥抱安装Hug非常简单,只需: pip3 install hug --upgrade理想情况下,在virtual environment 快速入门只需几行代码即可使用简单端点构建示例API # filename: happy_birthday.py """A basic (single function) API written using hug""" import hug @hug.get('/happy_birthday') def happy_birthday(name, age:hug.types.number=1): """Says happy birthday to a user""" return "Happy {age} Birthday {name}!".format(**locals())要运行,请在命令行中键入: hug -f happy_birthday.py您可以在浏览器中访问该示例,网址为:localhost:8000/happy_birthday?name=hug&age=1然后在以下位置查看您的API的文档localhost:8000/documentation 参数也可以在URL中编码(签出happy_birthday.py对于整个示例) @hug.get('/greet/{event}') def greet(event: str): """Greets appropriately (from http://blog.ketchum.com/how-to-write-10-common-holiday-greetings/) """ greetings = "Happy" if event == "Christmas": greetings = "Merry" if event == "Kwanzaa": greetings = "Joyous" if event == "wishes": greetings = "Warm" return "{greetings} {event}!".format(**locals())一旦您按照上述方式运行服务器,您就可以通过以下方式使用它: curl http://localhost:8000/greet/wishes "Warm wishes!" 拥抱着版本化 # filename: versioning_example.py """A simple example of a hug API call with versioning""" import hug @hug.get('/echo', versions=1) def echo(text): return text @hug.get('/echo', versions=range(2, 5)) def echo(text): return "Echo: {text}".format(**locals())要运行示例,请执行以下操作: hug -f versioning_example.py然后,您可以从以下位置访问该示例localhost:8000/v1/echo?text=Hi/localhost:8000/v2/echo?text=Hi或从以下地址访问您的API的文档localhost:8000 注意:Hug中的版本控制自动支持版本头和直接基于URL的规范 Hug接口测试拥抱的http方法装饰器不会修改您的原始函数。这使得测试Hug API与测试任何其他Python函数一样简单。此外,这意味着与其他Python代码中的API函数交互与仅调用Python API函数一样简单。Hug使测试API的完整Python堆栈变得容易,方法是使用hug.test模块: import hug import happy_birthday hug.test.get(happy_birthday, 'happy_birthday', {'name': 'Timothy', 'age': 25}) # Returns a Response object你可以用这个Response测试断言的对象(签出test_happy_birthday.py): def tests_happy_birthday(): response = hug.test.get(happy_birthday, 'happy_birthday', {'name': 'Timothy', 'age': 25}) assert response.status == HTTP_200 assert response.data is not None 与其他基于WSGI的服务器运行Hug拥抱暴露出一种__hug_wsgi__自动在每个API模块上使用魔法方法。在任何标准的WSGI服务器上运行基于Hug的API都应该很简单,只需将其指向module_name:__hug_wsgi__ 例如: uwsgi --http 0.0.0.0:8000 --wsgi-file examples/hello_world.py --callable __hug_wsgi__要运行hello world hug示例API,请执行以下操作 Hug API的构建块在使用Hug框架构建API时,您将使用以下概念: 方法装饰器get,post,update等HTTP方法修饰器,在保持Python方法不变的同时将Python函数公开为API @hug.get() # app的./docker/docker-compose.yml bash-4.3# cd /src bash-4.3# tree . ├── __init__.py └── handlers ├── birthday.py └── hello.py 1 directory, 3 files 安全联系信息Hug认真对待安全和质量。这就是为什么我们只依赖经过彻底测试的组件并利用静电分析工具(如Banddit和SAFE)来验证我们代码库的安全性的原因。如果您发现或遇到任何潜在的安全问题,请立即通知我们,以便我们解决 若要报告安全漏洞,请使用Tidelift security contactTidelift将协调修复和披露 为什么要拥抱?拥抱只是希望有用的向导的意思。这代表了该项目的目标,即帮助指导开发人员创建编写良好且直观的API 谢谢,我希望你能找到这拥抱对您开发下一个Python API很有帮助! ~蒂莫西·克罗斯利 |
CopyRight 2018-2019 实验室设备网 版权所有 |