用Python测试RESTful API的POST请求
我正在测试一个我正在开发的RESTful接口(我用的是这个:codeigniter-restserver),我想用Python来实现。
我发现GET
请求似乎没问题,但在POST
请求上遇到了一些麻烦。我并不是想了解这个库的所有细节,而只是想搞清楚如何用Python来测试POST
请求。这是我目前的代码:
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
请求吗?我在Stack Overflow上看到很多人想找图形界面的工具来做这个(比如Firefox插件,等等),但对我来说,构建RESTful应用的主要目的就是有一个可以用脚本快速修改数据库的API。(比如用JSON文件里的数据填充数据库,随便什么。)
我用Python的方法是不是对的呢?
谢谢!
3 个回答
0
还有一个叫做 Nap 的工具,它其实是对请求库的一个封装,使用起来更方便,特别是用来调用 HTTP 接口的时候。
下面是一个使用的例子:
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
声明:我是 nap 的作者。
21
直接使用 httplib
来写代码是可以的,但这个方法比较底层,不够简单。
你可以看看 Requests 这个模块。它提供了一种非常简单且符合Python风格的方法来创建和发送HTTP请求。
import requests
requests.post(url, data={}, headers={}, files={}, cookies=None, auth=None)
2
通常情况下,POST请求是通过一个更高级的函数来完成的,这个函数叫做urllib2。
headers = {'User-Agent': user_agent}
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)