เหตุใดคุณจึงต้องใช้อันอื่นในการเปิดเผย API สำหรับแอพ Django ของคุณ
เหตุใดคุณจึงต้องใช้อันอื่นในการเปิดเผย API สำหรับแอพ Django ของคุณ
คำตอบ:
ในฐานะผู้เขียน django-rest-framework ฉันมีอคติชัดเจน;) แต่ความเห็นที่หวังว่าจะเป็นไปได้
ไม่ว่าในกรณีใดทั้งสองก็ดี ฉันอาจจะอธิบายลักษณะของ Tastypie เพื่อให้คุณมีชุดค่าเริ่มต้นที่สมเหตุสมผลและกรอบการทำงานของ REST ว่ามีการแยกและยืดหยุ่นดีมาก หากคุณวางแผนที่จะลงทุนเวลาจำนวนมากใน API ฉันขอแนะนำให้เรียกดูเอกสารและโค้ดเบสของแต่ละรายการและพยายามทำความเข้าใจกับสิ่งที่เหมาะกับคุณมากกว่า
เห็นได้ชัดว่ามี'Why TastyPie' อยู่ด้วย ในส่วนของมัน README และ'REST กรอบ 3'
ดูโพสต์บล็อกของ Daniel Greenfeld เกี่ยวกับการเลือกเฟรมเวิร์ก API สำหรับ Djangoตั้งแต่เดือนพฤษภาคม 2012 (น่าสังเกตว่านี่ยังไม่กี่เดือนก่อนที่ REST Framework 2.0 จะวางจำหน่ายขนาดใหญ่)
นอกจากนี้ยังมีคู่ของกระทู้เมื่อ Reddit กับ folks ถามคำถามเดียวกันนี้จากธันวาคม 2013และกรกฎาคม 2013
ทั้งสองเป็นทางเลือกที่ดี
สำหรับฟิลเตอร์นั้น Deliciouspie นั้นมีประสิทธิภาพมากขึ้นนอกกรอบ หากคุณมีมุมมองที่เปิดเผยแบบจำลองคุณสามารถทำฟิลเตอร์อสมการสไตล์ Django ได้:
http://www.example.com/api/person?age__gt=30
หรือการสืบค้น OR:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
สิ่งเหล่านี้เป็นไปได้ด้วย djangorestframework แต่คุณต้องเขียนตัวกรองที่กำหนดเองสำหรับแต่ละรุ่น
สำหรับการย้อนกลับฉันรู้สึกประทับใจมากกับ django-rest-framework Tastypie พยายามที่จะส่งอีเมลในข้อยกเว้นเมื่อsettings.ADMINS
DEBUG = False
เมื่อDEBUG = True
ใดข้อความแสดงข้อผิดพลาดเริ่มต้นจะถูกทำให้เป็นลำดับ JSONซึ่งอ่านยาก
DjangoFilterBackend
เอกสารที่จัดทำตามกรอบ REST ที่นี่: django-rest-framework.org/api-guide/filtering#api-guide
แก้ไขคำตอบที่ล้าสมัย Deliciouspie ไม่ได้รับการดูแลรักษาอีกต่อไป ใช้กรอบงาน Django REST หากคุณต้องเลือกกรอบงานที่ต้องทำ REST
สำหรับภาพรวมเกี่ยวกับความแตกต่างที่แท้จริงระหว่างทั้งคู่คุณควรอ่านเอกสารประกอบ พวกเขาทั้งสมบูรณ์มากกว่าหรือน้อยกว่าและค่อนข้างเป็นผู้ใหญ่
โดยส่วนตัวแล้วฉันมักจะอร่อย ดูเหมือนว่าจะง่ายกว่าในการตั้งค่า มันทำมาจากคนกลุ่มเดียวกันที่สร้างdjango-haystackซึ่งยอดเยี่ยมและตามแพ็คเกจ djangoมันถูกใช้มากกว่าเฟรมเวิร์ก Django REST
เป็นที่น่าสังเกตว่าตั้งแต่ครั้งแรกที่มีการถาม DRF นั้นได้หายไปจากความแข็งแกร่งไปสู่ความแข็งแกร่ง
มันใช้งานมากขึ้นของทั้งสองใน GitHub (ทั้งในแง่ของความมุ่งมั่น, ดาว, ส้อมและผู้มีส่วนร่วม)
DRF มีการสนับสนุน OAuth 2 และ API ที่เรียกดูได้
สุจริตสำหรับฉันว่าคุณสมบัติสุดท้ายคือนักฆ่า ความสามารถในการชี้ devs front-end ทั้งหมดของฉันไปที่ API ที่เรียกดูได้เมื่อพวกเขาไม่แน่ใจว่ามีอะไรทำงานและพูดว่า 'Go play; หา 'ที่ยอดเยี่ยม
ไม่น้อยเพราะมันหมายความว่าพวกเขาเข้าใจมันด้วยเงื่อนไขของตัวเองและรู้ว่า API จริง ๆ แล้วทำสิ่งที่ 'เอกสาร' บอกอย่างแน่นอน ในโลกของการรวมเข้ากับ API ความจริงเพียงอย่างเดียวทำให้ DRF เป็นกรอบในการเอาชนะ
django-tastypie-swagger
ปิดช่องว่างนี้หรือไม่
ทั้ง Tastypie และ DRF เป็นตัวเลือกที่ยอดเยี่ยม คุณไม่สามารถไปผิดกับพวกเขาอย่างใดอย่างหนึ่ง (ฉันไม่ได้ทำงานกับ Piston มาก่อนและมันก็ไม่ได้รับความนิยมอีกต่อไปแล้ววันนี้ดังนั้นจะไม่ / ไม่สามารถแสดงความคิดเห็นได้ Taken for Granted.) ในความเห็นที่ต่ำต้อยของฉัน: ควรเลือกทักษะความรู้และความสามารถของคุณ (และทีมเทคโนโลยีของคุณ) แทนที่จะเป็นสิ่งที่ TastyPie และ DRF เสนอให้นอกจากว่าคุณกำลังสร้างสิ่งที่ยิ่งใหญ่อย่าง Quora, Facebook หรือ Google
โดยส่วนตัวแล้วฉันเริ่มทำงานครั้งแรกกับ TastyPie ในเวลาที่ฉันไม่รู้จัก django อย่างถูกต้อง ทุกอย่างสมเหตุสมผลในเวลานั้นเพียงรู้ว่า REST และ HTTP เป็นอย่างดี แต่แทบไม่มีความรู้เกี่ยวกับ django เพราะความตั้งใจเพียงอย่างเดียวของฉันคือการสร้าง RESTful API ในเวลาไม่นานซึ่งจะต้องใช้ในอุปกรณ์มือถือ ดังนั้นถ้าคุณเป็นเหมือน 'ฉันเกิดขึ้นในเวลานั้นเรียกว่า django-new-bie'อย่าคิดว่าไปมากสำหรับ TastyPie
แต่ถ้าคุณมีเวลาหลายปีประสบการณ์การทำงานกับ Djangoรู้ได้จากภายในและสะดวกสบายในการใช้แนวคิดขั้นสูง (เช่น Class Based Views, Forms, Model Validator, QuerySet, Manager และ Model Instances และวิธีที่พวกเขาโต้ตอบกับคนอื่น) * * ไปที่ DRF ** DFR ขึ้นอยู่กับมุมมองที่อิงจากคลาสของ django DRF คือ django ที่มีลักษณะเหมือนจริง มันเหมือนกับว่าคุณกำลังเขียนรูปแบบโมเดล, เครื่องมือตรวจสอบความถูกต้อง ฯลฯ (ดี, django สำนวนไม่มีที่ใกล้กับงูหลาม idiomatic ถ้าคุณเป็นผู้เชี่ยวชาญงูหลาม แต่ไม่มีประสบการณ์กับ Django แล้วคุณอาจมีช่วงเวลาที่ยากลำบากพอดีกับปรัชญา django สำนวนและ เรื่องนั้น DRF ก็เช่นกัน) DRF มาพร้อมกับวิธีการสร้างเวทมนตร์มากมายเช่นเดียวกับ django หากคุณรักวิธีการและปรัชญา django ที่มีมนต์ขลัง ** DRF ** เหมาะสำหรับคุณ
ตอนนี้เพียงเพื่อตอบคำถามที่แน่นอน:
Tastypie:
ข้อดี:
ข้อเสีย:
DRF:
ข้อเสีย:
โดยส่วนตัวฉันจะใช้อะไรในโครงการต่อไป
ตอนนี้ฉันไม่ได้เป็นแฟนของ MAGIC และฟังก์ชั่นนอกกรอบอีกต่อไป เพราะสิ่งเหล่านี้มาพร้อมกับราคาที่ยอดเยี่ยม * สมมติว่าฉันมีตัวเลือกทั้งหมดและควบคุมเวลาและงบประมาณของโครงการฉันจะเริ่มด้วยน้ำหนักเบาอย่าง RESTLess ( https://github.com/toastdriven/restless ) (สร้างโดยผู้สร้าง TastyPie และ django-haystack ( http: //haystacksearch.org/ )) และสำหรับเรื่องเดียวกันอาจจะ / เลือกเฟรมเวิร์กเว็บที่มีน้ำหนักเบาอย่างFlask
แต่ทำไม - รหัสหลามที่อ่านง่ายเรียบง่ายและจัดการได้ง่ายขึ้น (aka pythonic) แม้ว่ารหัสเพิ่มเติม แต่ในที่สุดก็มีความยืดหยุ่นที่ดีและปรับแต่ง
ถ้าคุณไม่มีทางเลือกนอกจาก Django และหนึ่งใน TastyPie และ DRF ล่ะ?
ถ้าอย่างนั้นทำไมคุณถึงเลือก DRF / TastyPie ตั้งแต่แรก?
ฉันหวังว่ามันจะช่วยให้คุณตัดสินใจได้ดีขึ้น
การอ้างอิงอื่น ๆ - 1. The Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. ความแตกต่างระหว่าง django-Deliciouspie และ djangorestframework คืออะไร? ( django-Deliciouspie และ djangorestframework แตกต่างกันอย่างไร? )
เมื่อใช้ทั้งสองอย่างสิ่งหนึ่งที่ฉันชอบ (แนะนำ) เกี่ยวกับ Django Rest Framwork คือว่าสอดคล้องกับ Django มาก
การเขียนแบบจำลองอนุกรมคล้ายกันมากกับการเขียนแบบฟอร์ม มุมมองทั่วไปในตัวนั้นคล้ายกับมุมมองทั่วไปของ Django สำหรับ HTML
Django-Deliciouspie ไม่ได้รับการดูแลรักษาโดยผู้สร้างดั้งเดิมและเขาสร้างกรอบน้ำหนักเบาใหม่ของเขาเอง
ในปัจจุบันคุณควรใช้ django-rest-framework กับ django ถ้าคุณยินดีที่จะเปิดเผย API ของคุณ
องค์กรขนาดใหญ่กำลังใช้งานอยู่ django-rest-framework เป็นสมาชิกหลักของทีม django และเขาได้รับเงินทุนเพื่อรักษา django-rest-framework
django-rest-framework ยังมีแพ็คเกจ arty ที่ 3 จำนวนมากซึ่งจะช่วยให้คุณสร้าง API ของคุณได้ง่ายขึ้นด้วยความยุ่งยากน้อยลง
ส่วนหนึ่งของ drf นั้นจะถูกรวมใน django ด้วย
drf ให้รูปแบบและเครื่องมือที่ดีขึ้นกว่าเดิมจากนั้น django-Deliciouspie
ในระยะสั้นมันได้รับการออกแบบมาเป็นอย่างดีได้รับการดูแลเป็นอย่างดีได้รับเงินสนับสนุนจัดหาแอพของบุคคลที่สามขนาดใหญ่ได้รับความไว้วางใจจากองค์กรขนาดใหญ่