दिलचस्प पोस्ट
jQuery.ajax हैंडलिंग प्रतिक्रियाएं जारी रखें: "सफलता:" बनाम ".done"? JavaScript में बैकटीक प्रतीक (`) का क्या उपयोग है? सेट और लिस्ट में क्या अंतर है? क्या LINQ को एसक्यूएल मृत या जिंदा है? मैं कमांड लाइन टूल का उपयोग करते हुए मैक ओएस एक्स के लिए एक अच्छी दिखने वाली डीएमजी कैसे बनाऊँ? जावास्क्रिप्ट में चक्र के लिए अतुल्यकालिक आप एक अजगर time.struct_time ऑब्जेक्ट को एक datetime ऑब्जेक्ट में कैसे परिवर्तित करते हैं? क्या पृष्ठ को ताज़ा करने के बिना ब्राउज़र का एड्रेस बार बदलने का एक तरीका है? जावा में दो तारीखों के बीच अंतर की अवधि कैसे प्राप्त करें? ओ (लॉग एन) क्या मतलब है? पुनरावर्ती कार्यों को समझना सूचीव्यू सबबैज क्लिक करने योग्य कॉन्फिल्ट अनिर्धारित चर और जावा में सदस्य क्या jtextfield और jlist का उपयोग करने के लिए एक स्वत: पूर्ण होना संभव है? बिग-ओ आठ साल के बच्चों के लिए?

सर्विसेटेक रीस्ट एपीआई और कॉरस

कोई भी जानता है कि सर्इसस्टैक्स ढांचे का उपयोग सीओआरएस REST सेवाएं बनाने के लिए किया जा सकता है?

मैं दिनों के लिए WCF REST सामान के खिलाफ मेरे हादसे की पीट कर रहा हूं – बिल्कुल बेकार

धन्यवाद

वेब के समाधान से एकत्रित समाधान "सर्विसेटेक रीस्ट एपीआई और कॉरस"

CorsFeature प्लगइन का उपयोग करना

ग्लोबल CORS समर्थन को सक्षम करना

अब हमारे पास एक CorsFeature है जो CORS हेडर को नीचे प्लगइन में लपेटता है ताकि आपकी सेवा सेवा सेवाओं के लिए CORS समर्थन जोड़ना अधिक आसान हो सके।

आम तौर पर यह अब जरूरी है:

Plugins.Add(new CorsFeature()); 

जो डिफ़ॉल्ट मान का उपयोग करता है:

 CorsFeature(allowedOrigins:"*", allowedMethods:"GET, POST, PUT, DELETE, OPTIONS", allowedHeaders:"Content-Type", allowCredentials:false); 

आप डिफ़ॉल्ट से मेल खाते के किसी भी मूल्य को छोड़ सकते हैं। उदाहरण अगर आप बस प्राप्त और पोस्ट अनुरोधों की अनुमति प्राप्त विधियों को प्रतिबंधित करना चाहते हैं, तो आप यह कर सकते हैं:

 Plugins.Add(CorsFeature(allowedMethods:"GET, POST")); 

विश्व स्तर पर सभी विकल्प अनुरोधों के लिए CORS सक्षम करें

CorsFeature (या मैन्युअल ग्लोबल हेडर) पंजीकृत होने के बाद, आप वैकल्पिक रूप से सभी पंजीकृत वैश्विक हेडर (अर्थात CorsFeature में हेडर) और शॉर्ट सर्किट के साथ सभी विकल्प अनुरोधों को फेंकने के लिए पूर्व-अनुरोध फ़िल्टर जोड़कर सभी विकल्प अनुरोधों के लिए CORS को सक्षम करने का विकल्प चुन सकते हैं:

 this.PreRequestFilters.Add((httpReq, httpRes) => { //Handles Request and closes Responses after emitting global HTTP Headers if (httpReq.Method == "OPTIONS") httpRes.EndRequest(); //add a 'using ServiceStack;' }); 

CORS प्रति-सेवा समर्थन सक्षम करना

उपर्युक्त प्लगइन का उपयोग करने के बजाय, सर्विसस्टैक्स आपको [EnableCors] रिस्पांस फ़िल्टर विशेषता का उपयोग करके प्रति-सेवा के आधार पर कॉरस को सक्षम करने की अनुमति देता है, जो कि इसके बाद के संस्करण के समान डिफ़ॉल्ट हैं। उदाहरण के साथ उपरोक्त के रूप में आप केवल जीईटी, पोस्ट को सक्षम कर सकते हैं:

 [EnableCors(allowedMethods:"GET,POST")] public class MyService : Service { ... } 

मैन्युअल रूप से कॉरस सक्षम करना

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

वैश्विक HTTP हेडर सेट करना

यह है कि कैसे विश्वव्यापी रूप से आप को AppHost कॉन्फ़िग में क्रॉस उत्पत्ति साझाकरण को सक्षम करने के लिए:

 public override void Configure(Container container) { //Permit modern browsers (eg Firefox) to allow sending of any REST HTTP Method base.SetConfig(new EndpointHostConfig { GlobalResponseHeaders = { { "Access-Control-Allow-Origin", "*" }, { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" }, { "Access-Control-Allow-Headers", "Content-Type" }, }, }); } 

एक सेवा में कस्टम HTTP हेडर रिटर्निंग

ये हेडर हर अनुरोध पर भेजे जाएंगे, वैकल्पिक रूप से आप इसे विशिष्ट वेब सेवाओं के लिए भी सक्षम कर सकते हैं, उदाहरण के लिए, हैलो वर्ल्ड वेब सेवा ले लीजिए:

 public class Hello { public string Name { get; set; } } public class HelloResponse { public string Result { get; set; } } public class HelloService : IService { public object Any(Hello request) { var dto = new HelloResponse { Result = "Hello, " + request.Name }; return new HttpResult(dto) { Headers = { { "Access-Control-Allow-Origin", "*" }, { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" } { "Access-Control-Allow-Headers", "Content-Type" }, } }; } } 

उपरोक्त सभी सी # कोड हैं जिन्हें आपको एक वेब सेवा विकसित करने की आवश्यकता होती है, जो तब आपके लिए सभी HTTP वर्क्स (GET, POST, आदि) और अंतर्निहित अंतपॉइंट्स, अर्थात् JSON, XML, JSV, HTML, CSV, SOAP 1.1 / 1.2 – मुफ्त में, किसी भी विन्यास या घर्षण की आवश्यकता के बिना। उपरोक्त वेब सेवा का लाइव उदाहरण जांचें

उपरोक्त समापन बिंदुओं के अतिरिक्त प्रत्येक सेवा JSONP (अजाक्स ऐप्स में क्रॉस-डोमेन सेवा कॉल को सक्षम करने के लिए एक और लोकप्रिय तरीका) के लिए उपलब्ध है, जहां प्रत्येक सेवा को जेएसओएनपी के जरिए कॉलब्रेक = सीबी पैरामीटर को क्वेरीस्ट्रिंग में जोड़कर कहा जा सकता है , जैसे:

http://www.servicestack.net/ServiceStack.Hello/servicestack/hello/world?callback=cb

यह सर्विसस्टैक उपयोग करने के लचीलेपन और उत्पादकता जीत का एक और उदाहरण है, जहां आप सचमुच अपनी वेब सेवा में घर्षण से मुक्त लचीलापन और अभिव्यक्ति की स्वतंत्रता प्रदान करते हैं, वस्तुतः कुछ भी बदले में लौटते हैं और उम्मीद के मुताबिक यह क्रमबद्ध होता है

यह डब्लूसीएफ़ से अधिक उपयोग करने में आसान नहीं है (अधिक से अधिक आउट-द-बॉक्स फीचर के साथ), लेकिन यह बहुत तेज़ है जहां अपने सभी घटकों को अधिकतम प्रदर्शन के लिए अत्यधिक अनुकूलित किया गया है ।

बस एफवाईआई, जैसा कि मुझे पता चलना मुश्किल था कि कॉरस प्लगइन कहाँ रहते थे। शायद मैं सिर्फ मोटी हूँ

यह ServiceStack.ServiceInterface.CorsServiceStack.ServiceInterface.CorsServiceStack.ServiceInterface.Cors