使用Python的POST测试RESTful API

9 python api http

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

GET似乎工作正常,但我遇到了麻烦POST.我不是在询问这个库的来龙去脉,而只是想弄清楚如何POST用Python 进行测试.这就是我所拥有的:

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()
Run Code Online (Sandbox Code Playgroud)

这个脚本是否足以作为一种测试POST方式?我已经看到很多关于人们寻找GUI工具来执行此操作的请求(Firefox插件)但对我来说,首先构建RESTful应用程序的关键是要有一个我可以编写脚本的API快速修改数据库.(使用来自JSON文件的数据填充它,无论如何.)

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

谢谢

Cor*_*erg 21

直接写作httplib很好,但水平较低.

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

import requests

requests.post(url, data={}, headers={}, files={}, cookies=None, auth=None)
Run Code Online (Sandbox Code Playgroud)


Sen*_*ran 2

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

headers = {'User-Agent': user_agent}

data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud)