使用Python的POST测试RESTful API

时间:2011-06-18 00:40:41

标签: python api http

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

GET似乎工作正常,但我遇到POST问题。我不是在询问ins&这个图书馆的出局,我只是在尝试 弄清楚如何用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的方法?我已经看到很多关于人们寻找GUI工具的请求(Firefox插件,etc) 但对我来说,首先构建一个RESTful应用程序的关键是拥有一个我可以编写脚本的API来快速修改数据库。 (用数据填充它 来自JSON文件,无论如何。)

我是否采用这种基于Python的方法走上正轨?

由于

3 个答案:

答案 0 :(得分:21)

直接写入httplib很好,但水平较低。

查看Requests模块。这是一种非常简单和pythonic的方法来制作和发送http请求。

import requests

requests.post(url, data={}, headers={}, files={}, cookies=None, auth=None)

答案 1 :(得分:2)

POST通常通过更高级别的函数urllib2完成。

headers = {'User-Agent': user_agent}

data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)

答案 2 :(得分:0)

还有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

免责声明:我小睡了。