使用Python中的POST测试RESTful API

使用Python中的POST测试RESTful API,python,api,http,Python,Api,Http,我正在尝试测试一个正在开发的RESTful接口(我正在使用这个:),我想使用Python GETs似乎工作正常,但我在POSTs方面遇到了问题。我不是问这个图书馆的详细情况,我只是在尝试 了解如何使用Python测试POSTing。这就是我得到的: import httplib, urllib params = urllib.urlencode({ 'sentence': 'esta es una frase', 'translation': 'this is a s

我正在尝试测试一个正在开发的RESTful接口(我正在使用这个:),我想使用Python

GET
s似乎工作正常,但我在
POST
s方面遇到了问题。我不是问这个图书馆的详细情况,我只是在尝试 了解如何使用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的一种方法?我在网上看到很多关于人们寻找GUI工具(Firefox插件)的请求 但对我来说,首先构建RESTful应用程序的关键是要有一个可以编写脚本的API来快速修改db。(用数据填充它 从JSON文件,不管怎样。)

我使用这种基于Python的方法是否正确


谢谢

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

headers = {'User-Agent': user_agent}

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

直接写入
httplib
很好,但级别相当低

查看模块。这是一种非常简单的pythonic方法,用于编写和发送http请求

import requests

requests.post(url, data={}, headers={}, files={}, cookies=None, auth=None)
还有一个只用于请求的包装器,它可以方便地调用HTTP API等

用法示例:

from nap.url import Url
api = Url('http://httpbin.org/')

response = api.post('post', data={'test': 'Test POST'})
print(response.json())
更多示例:

免责声明:我写了小睡