你会如何使用cURL" GET"使用基于Python的REST API进行网络编程?

时间:2014-06-10 15:09:15

标签: python rest python-2.7 curl pycurl

首先让我说cURLPythonREST是新手。

这是我想要做的事情:

我有一个带SDN控制器的虚拟网络(Contrail)。 Contrail有一个基于Python的REST API ,允许进行网络自动化开发和管理。

要访问此REST API,我一直尝试通过Firefox扩展程序暂时使用cURL脚本," RESTClient"只是为了确保cURL调用独立于Python

cURL脚本旨在查询VN(虚拟网络)并打印出他们的信息,以便我可以输入我需要删除的特定VN的ID作为维护的一部分。

以下是我目前正在使用的cURL脚本:

请求:

curl -X GET -H "Content-Type: application/json; charset=UTF-8" http://10.xx.xx.xx:1234/virtual-networks

响应(没有值):

{"virtual-networks": [{"href": , "fq_name": , ["default-domain", "vn-blue"], "uuid"}

基本上,我希望能够在Python中运行上面的cURL脚本。我有Python 2.7,urllib2,libcurl和pycurl设置,我只是无法弄清楚正确的语法。

2 个答案:

答案 0 :(得分:2)

基本上,您希望使用urllib2制作特殊的HTTP请求,或者 - 有些人可能会考虑更好 - 第三方requests模块。 HTTP请求不是太复杂,你首先可能想要阅读一般的HTTP请求(从Wikipedia开始,或者甚至查看新发布的RFC 723*))。在curl调用中,您正在设置某些标头参数(使用-H开关)。您可以使用请求的custom headers函数轻松复制这些内容,此处记录在此:http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers

答案 1 :(得分:1)

如果您可以安装requests库,则可以使用:

response = requests.get('http://10.xx.xx.xx:1234/virtual-networks')
response.json

您可以使用以下命令设置请求的标头:

headers = {'content-type': 'application/json'}
response = requests.get('http://10.xx.xx.xx:1234/virtual-networks', headers=headers)

但是,您应该只为POST,PUT,PATCH请求定义Content-type,并使用Accept进行GET。