2011-06-18 42 views
9

Tôi đang cố gắng kiểm tra giao diện RESTful mà tôi đang làm việc (Tôi đang sử dụng giao diện này: codeigniter-restserver) và tôi muốn sử dụng Python.Kiểm tra một API RESTful với POST từ Python

GET s có vẻ hoạt động tốt, nhưng tôi đang gặp sự cố với POST s. Tôi không hỏi về các ins & outs của thư viện này, thay vì tôi chỉ cố gắng để tìm ra cách để kiểm tra POST ing với Python. Đây là những gì tôi đã có:

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

Tập lệnh này có đủ để kiểm tra POST? Tôi đã nhìn thấy rất nhiều yêu cầu về SO về những người tìm kiếm các công cụ GUI để thực hiện việc này (các plugin của Firefox, etc) nhưng đối với tôi, toàn bộ điểm xây dựng ứng dụng RESTful ở nơi đầu tiên là có một API để sửa đổi db nhanh chóng. (Điền nó với dữ liệu từ tệp JSON, bất kỳ điều gì.)

Tôi có đi đúng hướng với phương pháp dựa trên Python này không?

Cảm ơn

Trả lời

2

BÀI ĐĂNG thường được thực hiện thông qua hàm mức cao hơn urllib2.

headers = {'User-Agent': user_agent} 

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

Liên kết đó đã chết! –

+1

đã xóa liên kết chết. –

21

viết trực tiếp vào httplib là tốt, nhưng khá thấp.

xem mô-đun Requests. Nó là một cách tiếp cận rất đơn giản và trơ trọi để tạo và gửi các yêu cầu http.

import requests 

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

Xin cảm ơn, đây là điều tốt để biết. –

0

Ngoài ra còn có Nap chỉ là trình bao bọc cho các yêu cầu nhưng thuận tiện để gọi, ví dụ: API HTTP.

sử dụng Ví dụ:

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

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

Thêm ví dụ: https://github.com/kimmobrunfeldt/nap#examples

Disclaimer: Tôi đã viết chợp mắt.

Các vấn đề liên quan