flask框架的post命令处理库

command-handler的Python项目详细描述


命令处理程序

pypi version构建状态

命令处理程序是flask框架的库 它提供:

  • 用于发布新命令的api方法,
  • 易于管理命令处理程序的工具。

安装

pip install command_handler

用法

使用命令处理程序导入命令处理程序对象,并在传递烧瓶应用程序时调用它。

fromcommand_handlerimportCommandHandlerfromflaskimportFlaskapp=Flask(__name__)ch=CommandHandler(app)

这将为您的api添加一个新的端点:/command,该端点在命令输入部分中指定。

可以通过返回对象的addhandler方法添加处理程序,如定义处理程序节中所述

配置

commandhandler的设计方式允许将配置参数传递给初始值设定项。

命令输入端点url

可以在default/commandroute前面加上flask路由接受的任何字符串 通过定义ruleprefix参数。

以下代码将url设置为/foo/bar/command

ch=CommandHandler(app,rulePrefix="/foo/bar")

还可以通过定义rulesuffix,更改默认的/command路由后缀。

以下代码将url设置为/baz

ch=CommandHandler(app,ruleSuffix="baz")

请求验证程序

可以定义命令请求验证器。 commandhandler默认设置commandjson验证器,无法删除它们。

可以通过设置接受字符串列表的验证器参数来定义验证器。

ch=CommandHandler(app,validators=["command","json"])

可能的验证器列表可以在验证器部分找到

自定义验证器

要注册自定义验证器,请将其传递到command\u handler.request.validator.validatorfactory.addassert方法。 它必须接受一个位置参数,该参数包含传递给commandhandler定义的视图的请求。

如果请求无效,则需要引发command\u handler.request.validator.exceptions.assertionFailedException。 其构造函数的第一个参数将发送到响应的主体,第二个参数将作为响应代码发送。

fromcommand_handler.request.validator.ValidatorFactoryfromcommand_handler.request.validator.exceptionsimportAssertionFailedExceptiondeffooValidator(request):raiseAssertionFailedException("Something went wrong",418)ValidatorFactory.addAssert("foo",fooValidator)

命令输入

默认情况下,到命令输入端点的路由是/command。 它可以按照配置部分中的说明进行配置

命令输入端点仅接受post请求 内容匹配如下:json模式

{"type":"object","properties":{"command":{"type":"string","description":"Name of the sent command","examples":["foo","foo.bar","foo.bar.baz"]},"payload":{"type":"object","description":"Payload of the sent command",}},"required":["command","payload"]}

还需要发送与正则表达式匹配的^application/*json$头的内容类型。

附加的验证器可以定义为在验证器部分中指定的验证器。

定义处理程序

可以通过调用commandhandler实例的addhandler方法来定义命令处理程序。

ch=CommandHandler(app)ch.addHandler(lambdapayload,command:None,"foo.*",{})

以下参数由addhandler方法接受:

处理程序

可调用对象,它是ca当匹配命令已发布时填充。

处理程序函数必须接受两个参数:

  1. 命令的有效载荷,
  2. 命令名。
命令

与命令名匹配的字符串。

命令匹配在"命令匹配"部分中进行了说明。

模式

json模式用于验证命令有效负载的对象。

变压器=无

transformer参数可用于在将命令传递给处理程序之前转换命令的负载。

它只获取命令的有效负载作为参数,并返回作为有效负载传递给处理程序的对象。

后处理器=无

处理程序处理完成时调用的可调用对象。

它必须接受与处理程序相同的参数。 如果transformer被传递到addhandler调用,则它具有附加的命名参数origpayload 它包含传递给调用程序的原始有效负载。

如果内部处理程序返回任何值,则将其作为innerResult命名参数传递。

引发异常

不可能更改命令输入端点的响应 除了提出一个例外。

当引发 命令输入端点返回带有http代码的响应 在创建过程中指定(默认为400:错误请求) 与以下json模式匹配的消息::

{"type":"object","properties":{"type":"string","description":"Message passed to the `InvalidRequestException` during creation","default":""},"required":["error"]}

最好将4xx代码与invalidrequestexception

下面的代码片段将用418响应:我是一个茶壶 {"error":"我是茶壶处理程序"}发送foo.bar命令时:

pip install command_handler
0

当引发任何其他异常时,命令输入端点 返回带有http code500的响应:内部服务器错误

命令匹配

发送到命令输入端点的每个命令名 必须是由点分隔的单词列表。

传递给方法的命令名也必须是 以同样的形式。对于分配给处理程序的命令名,有两个特殊的词:

  • *只能替换一个单词,
  • 可以替换零个或多个单词。

命令处理程序调用程序将调用与处理程序的命令名匹配的处理程序 传递给方法。如果没有匹配 处理程序将用500:内部服务器错误

响应命令输入端点

如果有多个匹配项,则首先添加的处理程序将被调用。 但是,处理程序的注册表不允许添加分配给已覆盖名称的处理程序。 这意味着添加处理程序的顺序很重要。

例如,下面的代码片段可以正常工作,但是以相反的顺序添加这些处理程序将导致 提出一个例外。

pip install command_handler
1

验证器

命令处理程序包含以下预定义的请求验证程序:

命令

验证是否:

  • 请求包含有效载荷命令字段,
  • 命令字段值是字符串,
  • 有效载荷字段值是字典,
  • 命令字段的值与定义的ha匹配NDLLS,
  • payload字段的值与分配给处理程序的架构匹配,
json

验证是否:

  • 请求包含内容类型的头,其值与^application/*json$regex匹配,
  • 请求内容可以JSON解析。
私人领地

验证请求的远程IP地址的验证器 是私有的

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

推荐PyPI第三方库


热门话题
java访问私有字段而不使用getter方法?   使用PowerMockito在JavaEWSAPI中模拟测试拉订阅   启动活动时未保存java首选项并清除变量   java如何在servlet中检索子域?斯普林有帮手吗   java使用Docker从命令行构建Android项目   java Android,ActionBar后退按钮(setDisplayHomeAsUpEnabled(true))重新创建父活动   java在重用FileOutputStream时应该关闭流吗?   java使用RESTAPI将文件上载到s3 bucket   Java SOAP Web服务应用程序中的mysql用户登录方法不工作   java使用多个数字计算百分比并转换为长   java Android SQLiteDatabase查询忽略空格   java如何在Javafx中比较两个字段文本   java错误:未设置java_HOME,在Eclipse安装后找不到   java在安卓中保存对象   java如何使用jaxws从返回List<Object>的服务中检索值   java Google OAuth2 JWT令牌验证异常   SpringMVC中的JavaUTF8编码问题,当从JSP表单发送POST请求中的越南语信件时   java从webview重定向到安卓应用程序   JUnit 5中多个扩展的java顺序