Tại sao bạn lại sử dụng cái này để làm API cho ứng dụng Django?
Tại sao bạn lại sử dụng cái này để làm API cho ứng dụng Django?
Câu trả lời:
Là tác giả của django-rest-framework, tôi đã có một thành kiến rõ ràng;) nhưng ý kiến hy vọng khá khách quan của tôi về điều này là một cái gì đó như:
Trong mọi trường hợp, cả hai đều tốt. Tôi có thể mô tả Tastypie là cung cấp cho bạn một bộ mặc định hợp lý ra khỏi hộp và khung REST là rất tách rời và linh hoạt. Nếu bạn dự định đầu tư nhiều thời gian vào API, tôi sẽ khuyên bạn nên duyệt qua các tài liệu & cơ sở mã của từng loại và cố gắng cảm nhận xem nó phù hợp với bạn hơn.
Rõ ràng, cũng có 'Tại sao TastyPie?' phần trong đó là README và 'REST framework 3' .
Xem thêm bài đăng trên blog của Daniel Greenfeld về Chọn khung API cho Django , từ tháng 5 năm 2012 (Đáng lưu ý rằng đây vẫn là một vài tháng trước khi phát hành REST framework 2.0 lớn).
Ngoài ra một vài chủ đề trên Reddit với những người hỏi cùng câu hỏi này, từ tháng 12 năm 2013 và tháng 7 năm 2013 .
Cả hai đều là lựa chọn tốt.
Đối với các bộ lọc, ngon miệng là mạnh mẽ hơn ra khỏi hộp. Nếu bạn có chế độ xem hiển thị mô hình, bạn có thể thực hiện các bộ lọc bất bình đẳng theo phong cách Django:
http://www.example.com/api/person?age__gt=30
hoặc truy vấn OR:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
những điều này là có thể với djangorestframework, nhưng bạn phải viết các bộ lọc tùy chỉnh cho từng mô hình.
Đối với tracebacks, tôi đã ấn tượng hơn với django-rest-framework. Tastypie cố gắng gửi email settings.ADMINS
về các ngoại lệ khi DEBUG = False
. Khi DEBUG = True
, thông báo lỗi mặc định là JSON được tuần tự hóa , khó đọc hơn.
DjangoFilterBackend
như tài liệu của khung REST tại đây: django-rest-framework.org/api-guide/filtering#api-guide
EDIT Câu trả lời lỗi thời, ngon miệng không thực sự được duy trì nữa. Sử dụng khung Django REST nếu bạn phải chọn khung để làm REST.
Để biết tổng quan về sự khác biệt thực tế giữa cả hai bạn nên đọc tài liệu của họ. Cả hai đều ít nhiều hoàn thiện và khá trưởng thành.
Cá nhân tôi có xu hướng ngon miệng mặc dù. Nó có vẻ dễ dàng hơn để thiết lập nó. Nó được thực hiện từ cùng những người đã tạo ra django-haystack , điều này thật tuyệt vời và theo gói django, nó được sử dụng nhiều hơn so với khung Django REST.
Điều đáng chú ý là vì đây là lần đầu tiên DRF yêu cầu đã tăng cường sức mạnh.
Đó là hoạt động tích cực hơn của cả hai trên github (cả về cam kết, sao, dĩa và cộng tác viên)
DRF có hỗ trợ OAuth 2 và API có thể duyệt.
Thành thật với tôi rằng tính năng cuối cùng là kẻ giết người. Có thể trỏ tất cả các nhà phát triển mặt trước của tôi vào API có thể duyệt được khi họ không chắc chắn cách thức hoạt động của một cái gì đó và nói 'Đi chơi; tìm ra 'là tuyệt vời.
Không phải ít nhất bởi vì điều đó có nghĩa là họ hiểu điều đó theo cách riêng của họ và biết rằng API thực sự, chắc chắn, hoàn toàn làm những gì 'tài liệu' nói. Trong thế giới tích hợp với API, chỉ riêng thực tế đó đã khiến DRF trở thành khuôn khổ để đánh bại.
django-tastypie-swagger
đóng khoảng cách này?
Chà, Tastypie và DRF đều là những lựa chọn tuyệt vời. Bạn chỉ đơn giản là không thể đi sai với một trong số họ. (Tôi chưa từng làm việc với Piston bao giờ; và loại này không còn là xu hướng nữa bây giờ một ngày nên sẽ không / không thể nhận xét về nó. Được thực hiện cho cấp.). Theo ý kiến khiêm tốn của tôi: Nên lựa chọn các kỹ năng, kiến thức và khả năng của bạn (và nhóm công nghệ của bạn). Thay vì dựa trên những gì TastyPie và DRF cung cấp, trừ khi bạn không xây dựng một thứ gì đó thực sự lớn như Quora, Facebook hay Google.
Cá nhân tôi, cuối cùng tôi đã bắt đầu làm việc trên TastyPie vào thời điểm tôi thậm chí còn không biết django đúng cách. Tất cả đều có ý nghĩa vào thời điểm đó, chỉ biết REST và HTTP rất tốt nhưng hầu như không có hoặc có ít kiến thức về django. Bởi vì ý định duy nhất của tôi là xây dựng các API RESTful trong thời gian không được sử dụng trong các thiết bị di động. Vì vậy, nếu bạn giống như 'Tôi tình cờ ở thời điểm đó được gọi là django-new-bie', đừng nghĩ nhiều hơn cho TastyPie.
Nhưng nếu bạn có nhiều năm kinh nghiệm làm việc với Django, biết điều đó từ bên ngoài và rất thoải mái khi sử dụng các khái niệm nâng cao (như Chế độ xem dựa trên lớp, Biểu mẫu, Trình xác thực mô hình, Truy vấn, Trình quản lý và Mô hình và cách tất cả chúng tương tác với nhau), * * đi DRF. ** DFR dựa trên quan điểm dựa trên lớp của django. DRF là django thành ngữ. Giống như bạn đang viết các mẫu mô hình, trình xác nhận, v.v. (Chà, django thành ngữ không ở đâu gần với con trăn thành ngữ. Nếu bạn là chuyên gia về trăn nhưng không có kinh nghiệm với Django thì ban đầu bạn có thể gặp khó khăn với triết lý django thành ngữ đó cũng là vấn đề DRF). DRF đi kèm với rất nhiều phương pháp ma thuật sẵn có giống như django. Nếu bạn yêu thích các phương pháp và triết lý ma thuật django ** DRF ** chỉ dành cho bạn.
Bây giờ, chỉ để trả lời chính xác câu hỏi:
Tastypie:
Ưu điểm:
Nhược điểm:
DRF:
Nhược điểm:
Cá nhân tôi sẽ sử dụng những gì trong dự án tiếp theo của tôi?
Bây giờ, tôi không còn là một fan hâm mộ của các chức năng MAGIC và Out-of-box. Bởi vì tất cả họ đến với một chi phí * lớn. * Giả sử tôi có tất cả các lựa chọn và kiểm soát thời gian và ngân sách dự án, tôi sẽ bắt đầu với thứ gì đó nhẹ như RESTLess ( https://github.com/toastdriven/restless ) (được tạo bởi TastyPie và django-haystack ( http: //haystacksearch.org/ )). Và đối với cùng một vấn đề có lẽ / chắc chắn chọn khung web nhẹ như Flask.
Nhưng tại sao? - Mã python (hay pythonic) dễ đọc hơn, đơn giản và dễ quản lý hơn. Mặc dù nhiều mã hơn nhưng cuối cùng cung cấp sự linh hoạt và tùy biến tuyệt vời.
Điều gì sẽ xảy ra nếu bạn không có lựa chọn nào khác ngoài Django và một trong TastyPie và DRF?
Vậy thì tại sao bạn lại chọn DRF / TastyPie ngay từ đầu?
Tôi hy vọng, nó sẽ giúp bạn đưa ra quyết định tốt hơn.
Các tài liệu tham khảo khác - 1. Trạng thái của Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. Sự khác biệt giữa django-ngonpie và djangorestframework là gì? ( Sự khác biệt giữa django-ngonpie và djangorestframework là gì? )
Đã sử dụng cả hai, một điều mà tôi thích (ưa thích) về Django Rest Framwork là nó rất phù hợp với Django.
Viết tuần tự mô hình rất giống với viết mẫu mô hình. Chế độ xem Chung được xây dựng rất giống với Chế độ xem chung của Django cho HTML.
Django-ngonpie không còn được duy trì bởi người sáng tạo ban đầu và ông đã tạo ra một khung trọng lượng nhẹ mới của riêng mình.
Hiện tại bạn nên sử dụng django-rest-framework với django nếu bạn sẵn sàng để lộ API của mình.
Các tập đoàn lớn đang sử dụng nó. django-rest-framework là thành viên cốt lõi của nhóm django và anh ấy nhận được tài trợ để duy trì django-rest-framework.
django-rest-framework cũng có số lượng lớn các gói arty thứ 3 đang phát triển, điều này sẽ giúp bạn xây dựng API dễ dàng hơn với ít rắc rối hơn.
Một số phần của drf cũng sẽ được hợp nhất trong django thích hợp.
drf cung cấp nhiều mẫu và công cụ tốt hơn sau đó django-ngonpie.
Nói tóm lại, nó được thiết kế tốt, được bảo trì tốt, được tài trợ, cung cấp các ứng dụng bên thứ 3 khổng lồ, được các tổ chức lớn tin cậy, dễ dàng hơn và ít nồi hơi hơn v.v.