首先让我说cURL
,Python
和REST
是新手。
这是我想要做的事情:
我有一个带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设置,我只是无法弄清楚正确的语法。
答案 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。