2009-02-05 52 views
21

Tôi muốn viết một thư viện python để bọc một API kiểu REST được cung cấp bởi một dịch vụ Web cụ thể. Có ai biết về bất kỳ tài nguyên học tập tốt cho công việc như vậy, tốt nhất là nhằm vào các lập trình viên trung gian Python?HOWTO: Viết trình bao bọc API Python?

Tôi muốn có một bài viết hay về chủ đề này, nhưng tôi sẽ giải quyết các ví dụ mã đẹp, rõ ràng.

CLARIFICATION: Điều tôi đang làm là viết ứng dụng khách Python tương tác với dịch vụ Web - một thứ để xây dựng yêu cầu HTTP và phân tích cú pháp phản hồi XML/JSON, tất cả được bao bọc trong đối tượng Python.

+0

Có vẻ như bạn muốn nhập: 'app.users.john.name()' và chuyển đến url 'http://myapp.com/api/users/john/name' và hiểu phản hồi? –

+0

Bạn có quan tâm đến cách thiết kế một API Python trên API kiểu REST hoặc cách triển khai nó không? – jfs

+1

@Richard, đó sẽ là RPC, không phải là REST. Bạn không thể có các mẫu URI hoặc URI tài nguyên được mã hóa cứng vào một máy khách với một API REST. Nó cần khám phá URI thông qua siêu văn bản. Chỉ nên có 1 URI được mã hóa cứng, điểm vào của dịch vụ. Nếu không, bạn vi phạm một ràng buộc của REST và nó chỉ đơn giản là RPC, với tất cả các khớp nối đó. – aehlke

Trả lời

3

Tôi không thể chỉ cho bạn bất kỳ bài viết nào về cách thực hiện, nhưng tôi nghĩ có một vài thư viện có thể là mô hình tốt về cách thiết kế của riêng bạn. Ví dụ:

PyAws. Tôi không thấy mã nguồn vì vậy tôi không thể cho bạn biết mức độ tốt như ví dụ mã, nhưng các tính năng và ví dụ sử dụng trong trang web của họ phải là một mẫu thiết kế hữu ích

Universal Feed Parser không phải là trình bao bọc cho webservice (đó là một thư viện phân tích cú pháp RSS), nhưng đây là một ví dụ tuyệt vời về thiết kế ưu tiên tính linh hoạt của việc sử dụng và ẩn các chi tiết triển khai. Tôi nghĩ rằng bạn có thể có được ý tưởng sử dụng rất tốt cho wrapper của bạn ở đó.

+0

feedparser trông đẹp, thực sự. – jfs

2

Kết hợp yêu thích của tôi là httplib2 (hoặc pycurl cho hiệu suất) và simplejson. Như REST là "một cách thiết kế" hơn thì một "giao thức" thực sự không thực sự là một thứ có thể tái sử dụng (mà tôi biết). Trên Ruby bạn có một cái gì đó như ActiveResource. Và thành thật mà nói, ngay cả điều đó cũng chỉ phơi bày một số bảng dưới dạng webservice, trong khi sức mạnh của xml/json là chúng giống như "views" có thể chứa nhiều đối tượng được tối ưu hóa cho ứng dụng của bạn. Tôi hy vọng điều này có ý nghĩa :-)

+0

Đúng, không có gì có thể tái sử dụng được, vì REST là một kiến ​​trúc. – aehlke

+0

Để chính xác hơn, REST là "một cách để tạo ra các kiến ​​trúc web" - hay còn gọi là một kiến ​​trúc meta – csparpa

1

This tutorial page có thể là một nơi khởi đầu tốt (nhưng không chứa mọi thứ bạn cần).

0

Bạn nên xem PyFacebook. Đây là một trình bao bọc python cho Facebook API, và nó là một trong những API được thực hiện tốt nhất mà tôi từng sử dụng.

0

Bạn có thể thanh toán pythenic jobs, một trình bao bọc Python đẹp, đơn giản, nhưng được hình thành tốt xung quanh API công việc xác thực ... là một ví dụ tốt. Đó là những gì tôi đang làm bây giờ :)

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