curl 命令到 python 字典
curl command to python dict
我是我现在公司的后端开发人员。当前端团队遇到问题时,他们有时会使用 Chrome devtool 的 "copy request as curl" 功能并将有问题的 curl 请求发送给我。我在想,如果我能编写一个脚本以各种方式转换这些卷曲——删除、添加或调整参数等等,那就太棒了。
我认为这里的第一步是将命令解析为更易于使用的内容。我正在考虑使用 click or docopt 之类的东西,但没有看到一个简单的命令来执行 command line string
-> intelligent python object
或类似的东西。理想情况下,它不仅适用于这种情况,而且适用于任何有效的 Unix 命令。有没有可以轻松做到这一点的库?或者我需要扩展其中一个库吗?还是我最好从头开始写一些东西?
我正在尝试解析的卷曲示例:
curl http://myhost?myarg=ACTIVE&myotherarg=1 -H Pragma: no-cache -H
Origin: http://localhost:5000 -H Accept-Encoding: gzip, deflate, sdch
-H Accept-Language: en-US,en;q=0.8 -H Authorization: Token xxxxxxxx1234567 -H Accept: application/json, text/javascript, /;
q=0.01 -H Cache-Control: no-cache -H User-Agent: Mozilla/5.0
(Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/48.0.2564.103 Safari/537.36 -H Connection: keep-alive -H
Referer: http://localhost:5000/projects/7/overview-all/active/
--compressed
这在一般情况下可行的唯一方法是,如果所有 Unix 命令(或至少您正在使用的子集)在它们的参数和 Python 对应任何参数之间具有一致的转换正在通过。这不太可能。
特别是对于 cURL,标志还不错:尝试使用 Python argparse
library (tutorial here) to write a simple parser that picks apart the command itself and checking out the requests
库来建立与其普通关键字参数相对应的字典格式。
原来 python 模块 shlex
可以完成大部分繁重的工作。
我写了一些代码来处理我的特定用例:https://github.com/JesseAldridge/chrome_to_local_curl
我是我现在公司的后端开发人员。当前端团队遇到问题时,他们有时会使用 Chrome devtool 的 "copy request as curl" 功能并将有问题的 curl 请求发送给我。我在想,如果我能编写一个脚本以各种方式转换这些卷曲——删除、添加或调整参数等等,那就太棒了。
我认为这里的第一步是将命令解析为更易于使用的内容。我正在考虑使用 click or docopt 之类的东西,但没有看到一个简单的命令来执行 command line string
-> intelligent python object
或类似的东西。理想情况下,它不仅适用于这种情况,而且适用于任何有效的 Unix 命令。有没有可以轻松做到这一点的库?或者我需要扩展其中一个库吗?还是我最好从头开始写一些东西?
我正在尝试解析的卷曲示例:
curl http://myhost?myarg=ACTIVE&myotherarg=1 -H Pragma: no-cache -H Origin: http://localhost:5000 -H Accept-Encoding: gzip, deflate, sdch -H Accept-Language: en-US,en;q=0.8 -H Authorization: Token xxxxxxxx1234567 -H Accept: application/json, text/javascript, /; q=0.01 -H Cache-Control: no-cache -H User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36 -H Connection: keep-alive -H Referer: http://localhost:5000/projects/7/overview-all/active/ --compressed
这在一般情况下可行的唯一方法是,如果所有 Unix 命令(或至少您正在使用的子集)在它们的参数和 Python 对应任何参数之间具有一致的转换正在通过。这不太可能。
特别是对于 cURL,标志还不错:尝试使用 Python argparse
library (tutorial here) to write a simple parser that picks apart the command itself and checking out the requests
库来建立与其普通关键字参数相对应的字典格式。
原来 python 模块 shlex
可以完成大部分繁重的工作。
我写了一些代码来处理我的特定用例:https://github.com/JesseAldridge/chrome_to_local_curl