मैं अक्सर सिस्टम के लिए/अपने आस-पास के अपने स्वयं के रैपर/विस्तार विधियों को घुमाता हूं। और यह सोच रहा था कि अगर कोई अच्छा ओपन सोर्स कार्यान्वयन जानता है। मुझे सबसे ज्यादा करना पसंद है पर्स क्वेरीस्ट्रिंग पैरामीटर, एक नई क्वेरी स्ट्रिंग (यह कुंजी है) बनाएं, और पेज नामों को प्रतिस्थापित करें। किसी भी अच्छे को मिला, या सिस्टम है। आपके लिए पर्याप्त अच्छा है?सी # यूआरएल बिल्डर क्लास
उत्तर
ब्रैडविन की QueryString Builder कक्षा अच्छी है। एन्क्रिप्शन के लिए फ्लुएंट इंटरफ़ेस और समर्थन।
यह कोडप्रोजेक्ट पर UrlBuilder कक्षा को देखने के लायक भी है। सिस्टम के समान। UriBuilder को QueryString के साथ काम करने के लिए बेहतर समर्थन है।
हम अपने स्वयं के वैकल्पिक उरी वर्ग का उपयोग करते हैं जो आंशिक रूप से उरी पर आधारित है, जैसा कि आप कहते हैं। हालांकि, मुझे लगता है कि बनाने के लिए एक महत्वपूर्ण भेद है - सिस्टम। यूरी आमतौर पर अपरिवर्तनीय होने का इरादा है - या, अधिक सटीक रूप से, अपरिवर्तनीय व्यवहार करें। एक बार अस्तित्व में आने के बाद, यह एक सटीक सार्वभौमिक स्थान/संसाधन समापन बिंदु का प्रतिनिधित्व करता है। यदि आपको किसी भिन्न स्थान का वर्णन करने की आवश्यकता है, तो आपको एक नया उरी बनाना चाहिए, मौजूदा को नहीं बदला जाना चाहिए।
एक अलग वर्ग है जो उरी के उत्पादन में माहिर है: UriBuilder।
मुझे यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं (उदाहरण मदद करेंगे) लेकिन ऐसा लगता है कि आप एएसपी.नेट में अपाचे के mod_rewrite की कुछ कार्यक्षमता प्राप्त करने का प्रयास कर रहे हैं।
इस बारे में an article at MSDN है।
System.Uri
और System.UriBuilder
के बीच, आप उन दोनों से वास्तव में क्या खो रहे हैं?
उरी तरह रेक्स एम स्पष्ट किया अपरिवर्तनीय है। लेकिन मुझे उरीबिल्डर के बारे में भी पता नहीं था। इसमें देखेंगे। इस उत्तर पर – Trent
कोडप्लेक्स पर एक बहुत अच्छी नई ओपन सोर्स प्रोजेक्ट है जो आपको यूरिस को पढ़ने, लिखने, एन्क्रिप्ट करने और कुछ और करने की अनुमति देता है। उनकी जाँच करो!
/// <summary>
/// The arguments must be like: varName1, varValue1, varName2, varValue2 and so on.
/// Empty names will be not be added to the result.
/// Returns a string of the form varName1=varValue1&varName2=varValue2...
/// </summary>
public static string BuildQueryString(params string[] strings)
{
Debug.Assert(0 == strings.GetLength(0) % 2);
StringBuilder builder = new StringBuilder(50);
bool isName = true;
bool isEmptyName = false;
foreach (string crtString in strings)
{
isEmptyName = (isName && string.IsNullOrEmpty(crtString)) ||
(!isName && isEmptyName);
if (!isEmptyName)
{
builder.Append(HttpUtility.UrlEncode(crtString));
if (isName)
builder.Append("=");
else
builder.Append("&");
}
isName = !isName;
}
return builder.ToString();
}
Flurl [प्रकटीकरण: मैं लेखक हूँ]:
var url = "http://www.some-api.com"
.AppendPathSegment("endpoint")
.SetQueryParams(new {
api_key = ConfigurationManager.AppSettings["SomeApiKey"],
max_results = 20,
q = "Don't worry, I'll get encoded!"
});
आप के प्रयोजन के लिए यूआरएल का निर्माण कर रहे हैं तो एक धाराप्रवाह URL निर्माता है कि इस तरह दिखता है है उन्हें बुलाकर, Flurl.Http एक साथी lib है जो आपको धाराप्रवाह श्रृंखला से HTTP करने देता है:
await "https://api.mysite.com"
.AppendPathSegment("person")
.SetQueryParams(new { ap_key = "my-key" })
.WithOAuthBearerToken("MyToken")
.PostJsonAsync(new { first_name = firstName, last_name = lastName });
NuGet पर पूरा पैकेज प्राप्त करें:
PM> Install-Package Flurl.Http
या बस स्टैंड-अलोन URL निर्माता:
PM> Install-Package Flurl
- 1. बिल्डर क्लास
- 2. सी ++ बिल्डर
- 3. सी ++ बिल्डर में थ्रेड
- 4. सी # स्ट्रिंग बिल्डर
- 5. सी ++ बिल्डर आउटपुट विंडो
- 6. डेल्फी सी ++ बिल्डर विज़ुअलस्टूडियो
- 7. कंट्रोलर क्लास को यूआरएल स्ट्रिंग
- 8. बिल्डर
- 9. बोर्लैंड सी ++ बिल्डर 6 (2002)
- 10. सी # यूआरएल
- 11. सी ++ बिल्डर XE2, TXMLDocument 'DTD निषिद्ध है'
- 12. इंटरफेस बिल्डर
- 13. बिल्डर
- 14. अपाचे बिल्डर
- 15. सी ++ कास्टिंग बेस क्लास व्युत्पन्न क्लास गड़बड़
- 16. बिल्डर पैटर्न
- 17. सी # बेस क्लास विधि
- 18. सी # बेस क्लास
- 19. सी ++: सिंगलटन क्लास
- 20. सी # सिंगलटन लॉगिंग क्लास
- 21. ऑब्जेक्टिव-सी क्लास उपसर्गों
- 22. सी ++ बेस क्लास इंस्टेंस
- 23. सी ++ बेस क्लास समस्या
- 24. सी #: क्लास इंस्टीट्यूशन
- 25. सी ++ प्रॉक्सी क्लास
- 26. उद्देश्य-सी: क्लास विधि
- 27. टेम्पलेट क्लास सी ++
- 28. सी # बेस क्लास
- 29. प्रबंधित सी ++ रेफ क्लास
- 30. सी ++: पॉलिमॉर्फिक क्लास टेम्पलेट
कुडोस। यह लगभग वर्बैटिम है जो मैं वर्षों से रोलिंग कर रहा हूं। UriBuilder को पसंद न करें क्योंकि मैं गतिशील रूप से qs पैरामीटर जोड़ना अधिक कार्यक्षमता चाहता हूं। – Trent