Hug 使API开发尽可能简单 您所在的位置:网站首页 embrace与hug Hug 使API开发尽可能简单

Hug 使API开发尽可能简单

2023-07-26 01:03| 来源: 网络整理| 查看: 265

HUG

Hug的目标是使开发Python驱动的API尽可能简单,但并不简单。因此,它极大地简化了Python API开发

Hug的设计目标:

使开发Python驱动的API与书面定义一样简洁 框架应该鼓励编写自我文档代码 它应该是快的。出于性能原因,开发人员永远不会觉得有必要寻找其他地方。 为在Hug之上编写的API编写测试应该是简单而直观的 在API框架中只做一次比将问题集推给API框架的用户要好 成为下一代Python API的基础,采用最新技术

作为这些目标的结果,Hug仅支持Python3+,并且是在此基础上构建的Falcon's高性能HTTP库

HUG Hello World Example

支持拥抱发展

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 实验室设备网 版权所有