2010-01-17 10 views
6

में एक जटिल क्वेरी को कार्यान्वित करना चाहता हूं तो मैं एक आरईएसटी सेवा को कार्यान्वित करना चाहता हूं जो स्टार्टडेट के बाद बनाए गए उपयोगकर्ताओं को पुनः प्राप्त करने और व्यवस्थापक के विशेषाधिकार के साथ क्वेरी को पार्स करने में सक्षम है। ऐसा लगता है कि मानक आरईएसटी कार्यान्वयन केवल आईडी द्वारा पूछताछ कर सकता है। क्या मुझे इस प्रकार की क्वेरी को संभव या मानक बनाने के लिए स्वयं परिभाषित प्रोटोकॉल की आवश्यकता है?यदि मैं REST

धन्यवाद!

उत्तर

1

Google's GDATA Protocol पर एक नजर डालें। यह बहुत RESTful है और अभी भी एक स्वच्छ यूआरआई रखते हुए "जटिल" प्रश्नों का प्रदर्शन करने का एक बहुत अच्छा तरीका है।

यह दृष्टिकोण के बिना एक संसाधन की पहचान करता है:

http://code.google.com/apis/gdata/docs/2.0/reference.html#Queries

यहाँ उनकी स्वच्छ क्वेरी यूआरआई

http://example.com/jo/-/Fritz/2006 
बजाय

http://example.com/jo?category=Fritz&category=2006 

गूगल से का एक उदाहरण है यू क्वेरी पैरामीटर गाएं, और यह क्लीनर यूआरआई पैदा करता है। हमने श्रेणियों के लिए इस दृष्टिकोण को चुना क्योंकि हम सोचते हैं कि श्रेणी प्रश्न सबसे आम प्रश्न होंगे।

+1

मुझे लगता है कि यह एक अच्छा तरीका है, लेकिन यह सभी परिस्थितियों को पूरा नहीं कर सकता है। –

+0

सच है। लेकिन यह आपको सही मानसिकता में ले जाता है। यूआरआई को आईडी के रूप में सोचा जाना चाहिए और प्रश्न नहीं। किसी खोज स्ट्रिंग या एसक्यूएल के संदर्भ में अपनी क्वेरी के बारे में न सोचें, बल्कि इसे संसाधन की पहचान करने वाली आईडी के रूप में सोचें (जो स्वयं शायद अन्य संसाधनों का सेट है - हाइपरलिंकिंग आरईएसटी में एक बड़ा सौदा है)। – nategood

+1

मैं अलग होना चाहता हूं।एक यूआरआई में एक * क्वेरी स्ट्रिंग * वास्तव में पूछताछ के उद्देश्य के लिए है। यह प्रति-क्वेरी यूआरआई के दृष्टिकोण को अमान्य नहीं बनाता है, इसके विपरीत, इसमें विशेष रूप से कैशिंग के आसपास फायदे हो सकते हैं। तो एक जटिल क्वेरी पोस्ट करना और रीडायरेक्ट जारी करना है। यह सब आपकी जरूरतों पर निर्भर करता है, और कोई भी समाधान स्वाभाविक रूप से अशांत नहीं है। – SerialSeb

0

जहां तक ​​मेरा संबंध है - बाकी सामग्री सीआरयूडी कार्यों के लिए मान्य है। आप अलग search विधि/यूआरएल लागू कर सकते हैं और इसे जितना आवश्यक हो उतना पैरामीटर पास कर सकते हैं। और यदि आप अभी भी आरईएसटी पद्धतियों का पालन करने का प्रयास करते हैं - तो आपको जीईटी अनुरोध प्रकार का उपयोग करना चाहिए।

+1

> आराम की सामग्री सीआरयूडी कार्यों के लिए मान्य है - यह सच नहीं है। – TheWhiteRabbit

+1

@TechExchange आप सही हैं। आरईएसटी के बारे में मेरा ज्ञान बदल गया क्योंकि मैंने इस प्रश्न का उत्तर दिया था।) – Eimantas

3

आरईएसटी में कोई बाधा नहीं है जो कहती है कि आप केवल आईडी द्वारा पूछ सकते हैं। उन खोज मानदंडों से मेल खाने वाले उपयोगकर्ताओं के समूह को वापस करने के लिए क्वेरी पैरामीटर के सेट का उपयोग करने में बिल्कुल कुछ भी गलत नहीं है।

0

रायन बेट्स में एक रेलस्कास्ट है जहां वह संसाधन के रूप में खोज बनाने को दिखाता है। अवधारणा अभी भी वैध है, भले ही आप रेल नहीं कर रहे हों।

http://railscasts.com/episodes/111-advanced-search-form

0

मैं जटिल लुकअप के दिशानिर्देशों के रूप में django के फील्ड लुकअप अर्थशास्त्र लेता हूं। https://docs.djangoproject.com/en/dev/ref/models/querysets/#id4

इस तथ्य से छेड़छाड़ न करें कि इसे लैन्यूज-विशिष्ट एपीआई के रूप में परिभाषित किया गया है, एचटीएमएल क्वेरी पैरामीटर में अनुवाद करना आसान है।

एक उदाहरण http://example.com/Goods?category=fruit&size__lt=14

एसक्यूएल में select * from goods where category = 'fruit' and size < 14 या /goods[@category='fruit' and @size < 14] xpath, या जो कुछ भी में का परिणाम प्राप्त करने के लिए किया जाएगा।