我正在尝试测试我正在使用的RESTful接口(我使用的是这个:codeigniter restserver),我想使用Python。
GET
似乎工作正常,但我的POST
有问题;我只是想以了解如何使用Python测试POST
ing。这就是我所拥有的:
import httplib, urllib
params = urllib.urlencode({
'sentence': 'esta es una frase',
'translation': 'this is a sentence'
})
headers = {
"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"
}
conn = httplib.HTTPConnection("localhost:80")
conn.request("POST", "/myapp/phrase", params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
这个脚本足以作为测试POST
ing的一种方式吗?我在SO上看到了很多关于人们寻找GUI工具(Firefox插件等)的请求但对我来说,首先构建RESTful应用程序的全部意义是拥有一个我可以编写脚本的API来快速修改数据库。(用数据填充从JSON文件,不管怎样。)
我采用这种基于Python的方法是否正确?
感谢
直接写入httplib
是可以的,但级别较低。
请查看请求模块。这是一种制作和发送http请求的非常简单的Python方法。
import requests
requests.post(url, data={}, headers={}, files={}, cookies=None, auth=None)
POST通常通过更高级别的函数urllib2完成。
headers = {'User-Agent': user_agent}
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
还有Nap,它只是请求的包装器,但可以方便地调用例如HTTP API。
示例用法:
from nap.url import Url
api = Url('http://httpbin.org/')
response = api.post('post', data={'test': 'Test POST'})
print(response.json())
更多示例:https://github.com/kimmobrunfeldt/nap#examples
免责声明:我写了《小睡》。