验证XML2RFC文档中的HTTP消息

rfc-http-validate的Python项目详细描述


rfc http验证

这是一个简单的脚本,用于验证xml2rfcv3文档中的HTTP消息(可能包含Structured Fields)。在

RFC XML中的HTTP消息

此脚本检查所有sourcecodeartwork元素;当一个元素的typehttp-message,它检查内容:

  • 或者,从有效的HTTP/1/1请求或状态行开始
  • 有一个或多个HTTP/1.1头字段行,可能有行折叠(这样就可以在RFC格式的约束下格式化长行)
  • (可选)具有一个响应正文,用一个空行与标题字段分隔开

开始行将检查方法或状态代码是否合理,版本标识符HTTP/1.1是否正确。但是,请求中的URL将不会被验证。在

头字段将被验证为常规语法。此外,使用结构化类型信息(见下文)配置的头字段名将根据该类型进行验证。在

例如

<sourcecodetype="http-message">
Foo: bar; baz
Foo: one,
     two
</sourcecode>

。。。将被验证为具有单个字段foo,值为bar; baz, one, two。在

主体(如果存在)当前被忽略(即,Content-Length未被选中)。在

请注意,在XML中,行首的不能有任何空格,除非它们是前几行的延续(如上图所示,折叠)。在

如果存在RFC8792 \\包装头,将首先展开行(即,在展开之前,如上所述)。这对于包含二进制内容(不能包含空格)的长行很有用;例如

^{pr2}$

配置字段的结构化类型信息

对于已验证的结构化字段,可以在命令行或配置文件中传递字段名称的类型信息(即列表、字典或项)。在

要在命令行上传递类型,请使用--list--dictionary--item参数,后跟字段名。例如:

rfc-http-validate.py --list Foo --list Bar --item Baz my_draft_.xml

这里,Foo和{}将被验证为结构化列表,而{}将被验证为结构化项。在

或者,您可以在JSON文件中收集这些信息,顶级对象键是字段名,它们的值是listdict或{}。因此,上面示例中的配置可以在JSON文件sf.json中表示为:

{"Foo":"list","Bar":"list","Baz":"item"}

。。。然后像这样传给脚本:

rfc-http-validate.py --map sf.json my_draft.xml

安装

该脚本需要Python 3,可以与pip一起安装:

pip3 install rfc-http-validate

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

推荐PyPI第三方库


热门话题
java我能知道文件的哪个条目正在被修改吗?   多线程Java并发线程   java抓取包含多个页面的多个字母标签的网站   为什么if语句不排除Java中的另一个if语句?   Java可序列化哈希映射到ByteArray以创建blob   JavaEclipseLombokBuilder添加新建议   java将文件路径数组转换为文件数组,并计算每个文件的大小   在Java8流中添加大小数   Bouncy Castle 1.46之前版本的java兼容性问题   无法在AWS设备场上运行安卓 Java Appium测试   java为什么不使用mavenwarplugin将键与“WEBINF/classes/METAINF/MANIFEST.MF”合并?   java如何在引用子类的成员时调用super()   找不到java TestFx无头MonoclePlatformFactory   java AbstractMethodError onClientSessionEvent和“缺少控制媒体的权限”   正则表达式如何使用JAVA在字符串的大写字母前插入空格?   我的Spring安全项目中的java BCrypt(Spring安全)   java在我的网站上查看小程序更新时遇到问题   java如何使用schedule方法