使用Python中的POST测试RESTful API



我正在尝试测试我正在使用的RESTful接口(我使用的是这个:codeigniter restserver),我想使用Python。

GET似乎工作正常,但我的POST有问题;我只是想以了解如何使用Python测试POSTing。这就是我所拥有的:

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()

这个脚本足以作为测试POSTing的一种方式吗?我在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

免责声明:我写了《小睡》。

最新更新