public string ID {get;set;}
activities/1
की एक आईडी (जो RavenDB से आता है) के साथ एक इकाई है।
मैं अपने ServiceStack AppHost
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
में निम्नलिखित मार्गों को पंजीकृत कर रहा हूँ मैं पोस्ट करने के लिए एक रीढ़ एप्लिकेशन का उपयोग कर रहा है और मेरे बाकी सेवा के लिए रखा।
आउट-ऑफ-द-बॉक्स क्या होता है:
- आईडी संपत्ति के रूप में "गतिविधियों/1"
- आईडी संपत्ति "गतिविधियों% 2F1" के रूप में मार्ग में एन्कोड किया गया है json में धारावाहिक रूप है
- सर्विसस्टैक यूआरएल आधारित आईडी प्रॉपर्टी को प्राथमिकता देता है, इसलिए मेरी स्ट्रिंग को एन्कोडेड मान मिलता है जो सीधे RavenDb के लिए उपयोग नहीं करता है।
- रीढ़ बदलें बल्कि हाइफ़न का उपयोग करने से स्लैश
- बदलें RavenDb आईडी पीढ़ी में करने के लिए "/ गतिविधियों" पोस्ट और JSON Serialiser लात जाने के लिए:
विकल्प के बारे में पता कर रहा हूँ
- सेट पर इनकोडिंग% 2F के लिए मेरी ईद संपत्ति पार्स करें और एक स्लेश
दोनों है कि मैं या तो RESTfuln खो में नुकसान में बदलने का मेरे एपीआई में निबंध, जो अवांछित है, या मैं RavenDb सम्मेलनों का पालन नहीं करता, जो आम तौर पर फॉक्स के बाहर समझदार होते हैं। इसके अलावा, मेरे पास स्लेश होने के लिए व्यक्तिगत प्राथमिकता है।
तो मुझे आश्चर्य है कि क्या सर्विसिसस्टैक में कोई अन्य विकल्प है जो मैं इस समस्या को हल करने के लिए उपयोग कर सकता हूं जिसमें कम समझौता शामिल है? या तो Serialiser अनुकूलन या वाइल्डकार्ड रूटिंग मेरे सिर में हैं ....
इस मैट के लिए धन्यवाद। तो क्या आप GET:/api/उपयोगकर्ताओं से एक इंटीजर आईडी लौट रहे हैं? – Chris
नहीं, मुझे परिणाम सेट में हेरफेर करने के लिए यह बहुत बेकार लगता है, इसलिए मैं सिर्फ पूर्ण स्ट्रिंग आईडी वापस कर देता हूं। क्लाइंट ऐप पूर्ण स्ट्रिंग आईडी रखता है, लेकिन जब यह किसी आईडी के साथ यूआरएल बनाता है, तो यह id.split ("/") जैसे कुछ का उपयोग करके सामने वाले हिस्से को स्ट्रिप करता है [1] –