微控制器上webserver的极简核

userv的Python项目详细描述


捕捉

每个web服务器的第一步是路由和解析html。 这是核心。

布线

路由器对象很简单,是服务器实例的输入。 示例:

from userv.routing import Router, text_response

router = Router()

def test(request):
    return text_response("some text")

router.add("/resturl", test, method="GET")

您可以使用:

router.get('/resturl', method="GET")

对于创建swagger等,还有一个list命令:

router.list()

在一个地方有这些路线,即使没有 服务器实例。

响应类型

有一些内置响应类型文本、json和静态文件。

响应函数的一般要点是创建一个生成器 将被服务器使用。

如果你想完全控制你的内存流或者需要写一些 渴望记忆的回应可以自己写一个回应。

小提示确保使用response_header函数并以 一个“\r\n”。

提供静态文件

很简单,只需将地址与要提供的文件一起添加。

示例:

from userv.routing import static_file

router.add("/index", static_file('boot.py'))

尽管示例不应该公开您的代码。这是一个非常简单和快速的测试。

炫耀你的api

swagger.io是记录api的好方法。本节是提供swagger.json的快速方法 从你的服务器。必须在本地网络中查看此api。

说明示例:

# Get requests have a parameter description
@swagger.info("My_funny summary")
@swagger.parameter('myvarname', description="", example='sdfs', required=True)
@swagger.response(200, 'smth is off')
def myrest_func(request):
    raise


# Post request needs a body description
@swagger.info("My_funny summary")
@swagger.body('weatherinfo', {'tada': "examplevar",
                              "tada2": 2})
@swagger.response(200, 'smth is off')
def post_myrest_func(request):
    raise

router.add("/resturl", myrest_func, method="GET")
router.add("/resturl", post_myrest_func, method="POST")

服务swagger.json的示例:

from userv.swagger import swagger_file
router.add("/swagger.json", swagger_file('my swagger api', "api title", router_instance=router))

示例显示我们添加了路由器实例,因此所有注册到该点的路由。 也就是说,如果你想让所有的路线在你的招摇过市添加招摇过市文件前不久运行。 你现在需要做的就是在浏览器中打开一个招摇过市的用户界面,并使用链接到你所服务的招摇过市。

更多软件包和网络服务器

atm有一个socketserver的实现,它甚至可以在esp8266上运行:

pip install userv.socket_server

以及具有可交换接口的异步服务器。

pip install userv.async_server

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在某些练习中避免索引异常   java Android,如何在具有socket的网络区域上提高性能?   更改web中的执行顺序后,JavaServlet过滤器不起作用。xml   java如何绑定泛型类?   JavaGmail RESTAPI:使用Google凭证而不模拟   java是解码整数序列的最快方法   java根据hashmaps的值(通过map的值进行比较)对hashmaps的数组列表进行排序   用于JBoss 7.1或Apache的java负载平衡器,带有Healt检查   java非常慢的MySQL读取性能   java如何在使用iRetryAnalyzer时从Windows CMD关闭Selenium WebDriver?   java随机闪烁仅出现在Galaxy Note 4上   java AttributeOverride MappedSuperClass属性的类型不同   java JPA:如何检测现有实体是否已更新?   java如何使用mavenassemblyplugin从dependencySet中删除METAINF?   安装SecurityManager时,java MQQueueManager构造函数挂起