2009-03-18 47 views
58

Tôi đã vật lộn với việc chọn phương pháp tạo ra một RESTful API với Django. Không ai trong số các phương pháp tôi đã thử dường như là viên đạn "bạc". WAPI từ http://fi.am có lẽ là gần nhất với những gì tôi muốn thực hiện, tuy nhiên tôi không chắc liệu nó có được chấp nhận trong một RESTful API thực sự để có các tham số là mã định danh tài nguyên trong chuỗi truy vấn thay vì ở định dạng URL "sạch" hay không. Bất kỳ đề xuất nào để sửa đổi WAPIs RestBinding.PATTERN để "dọn sạch" các URL? Một tùy chọn khác mà tôi đã khám phá là Django-Rest-Interface. Tuy nhiên, khung này dường như vi phạm một trong những phần quan trọng nhất mà tôi cần và đó là bao gồm URL tài nguyên đầy đủ để tham chiếu đến các tài nguyên khác (xem http://jacobian.org/writing/rest-worst-practices/ Sử dụng Liên kết Không đúng cách). Các tùy chọn cuối cùng là sử dụng django-multiresponse và về cơ bản làm điều đó một chặng đường dài.Các API Django và Restful

Vui lòng cung cấp cho tôi lời khuyên tốt nhất của bạn, đặc biệt là những người đã xử lý quyết định này.

Trả lời

18

Tôi tin rằng thời gian gần đây phát hành django piston bây giờ là giải pháp tốt nhất cho việc tạo ra một giao diện REST thích hợp trong Django. django-piston

Note: django piston dường như không còn được duy trì (xem bình luận dưới đây)

+7

django-piston chưa được bảo trì tốt trong nhiều năm. Trong khi nó có một người duy trì mới, tốt hơn là chọn một thứ gì đó từ http://djangopackages.com/grids/g/api/ đó là hiện tại hơn. – pydanny

+10

Tôi sẽ * mạnh mẽ * khuyên tránh django-piston. Tôi đã sử dụng nó kể từ khi nó đã bị bỏ rơi và có thể làm cho cuộc sống * rất * đau đớn, đặc biệt là nếu bạn cần phải bắt đầu làm bất cứ điều gì từ xa không chuẩn với serializer. –

+8

django-ngonpie bây giờ là giải pháp ưa thích của tôi cho REST. – gsiegman

5

Bạn có thể mất nhìn vào django-dynamicresponse, mà là một khung nhẹ để thêm API REST với JSON để Django của bạn các ứng dụng.

Nó đòi hỏi phải có những thay đổi tối thiểu để thêm hỗ trợ API cho các ứng dụng Django hiện có và làm cho nó trở nên thẳng thắn để xây dựng trong API ngay từ đầu trong các dự án mới. Về cơ bản, nó bao gồm hỗ trợ phần mềm trung gian để phân tích cú pháp JSON thành request.POST, ngoài việc tuần tự hóa bối cảnh trả về thành JSON hoặc hiển thị mẫu/chuyển hướng có điều kiện dựa trên loại yêu cầu.

Cách tiếp cận này khác với các khung công tác khác (như django-piston) ở chỗ bạn không cần phải tạo trình xử lý riêng cho các yêu cầu API. Bạn cũng có thể sử dụng lại logic xem hiện tại của mình và tiếp tục sử dụng xác thực biểu mẫu, v.v. như lượt xem bình thường.

9

django-tastypie là một cách tốt để làm điều đó, khẩu hiệu của họ: "Tạo API ngon cho Django các ứng dụng từ năm 2010" là khá dễ chịu;)

41

Đối với Django, bên cạnh tastypie và piston, django-nghỉ ngơi-framework là một hứa hẹn đáng nói đến. Tôi đã di chuyển một trong những dự án của tôi trên nó một cách suôn sẻ.

khuôn khổ Django Văn là một khuôn khổ REST của trọng lượng nhẹ cho Django, mà nhằm mục đích để làm cho nó dễ dàng để xây dựng cũng có kết nối, tự mô tả RESTful Web APIs.

nhanh Ví dụ:

from django.conf.urls.defaults import patterns, url 
from djangorestframework.resources import ModelResource 
from djangorestframework.views import ListOrCreateModelView, InstanceModelView 
from myapp.models import MyModel 

class MyResource(ModelResource): 
    model = MyModel 

urlpatterns = patterns('', 
    url(r'^$', ListOrCreateModelView.as_view(resource=MyResource)), 
    url(r'^(?P<pk>[^/]+)/$', InstanceModelView.as_view(resource=MyResource)), 
) 

Hãy ví dụ từ trang web chính thức, tất cả các mã trên cung cấp api, tự giải thích tài liệu (như xà phòng webservice dựa) và thậm chí sandboxing để thử nghiệm. Rât thuận tiện.

Links: http://django-rest-framework.org/

+0

Tôi cũng đang trong quá trình di chuyển từ Piston sang django-rest-framework ngay bây giờ. Trông rất đẹp để sử dụng. –

+0

Dường như ngày càng nhiều dự án sẽ được di chuyển. Tuyệt quá! :) –

+0

+1 vì điều này đã được chuyển sang Python 3.3! –

0

Tôi sẽ đề nghị bạn xem xét Django Rest Framework (DRF), chơi xung quanh với điều này và xem nếu nó phù hợp với yêu cầu của bạn. Lý do tôi đề nghị DRF là vì nó làm cho việc xem API thực sự đơn giản với việc sử dụng các lớp GenericAPIView, các lớp Mixin và hỗn hợp trong các khung nhìn chung. Bạn có thể dễ dàng sử dụng các mẫu thiết kế đã thử và thử nghiệm để tạo các điểm cuối API cũng như giữ cho mã cơ sở gọn gàng và súc tích. Bạn cũng DRY khi viết mã của bạn mà luôn luôn là tuyệt vời. Chế độ xem API của bạn có nghĩa là dài 2-3 dòng.

Bạn có thể thanh toán hướng dẫn này http://programmathics.com/programming/python/django-rest-framework-setup/ bắt đầu từ việc thiết lập môi trường của bạn để thực hiện các cách khác nhau để làm cho API RESTful của bạn sử dụng khung công tác còn lại django.

Tuyên bố từ chối trách nhiệm: Tôi là người tạo trang web đó.

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