मेरे पास एक dotnet new
टेम्पलेट प्रोजेक्ट है जहां मैं वर्टिकल स्लाइस आर्किटेक्चर।
भले ही कन्वेंशन {hello}.cs
/ {hello}Response.cs
/ {hello}Service.cs
का उपयोग करना है,
मेरे प्रोजेक्ट में सब कुछ Request.cs
/ Response.cs
/ Service.cs
कहा जाता है क्योंकि वे अपने नामस्थान के अंदर रहते हैं।
चीजें ठीक काम कर रही हैं लेकिन अब /meta
पेज पर एंडपॉइंट यूआरएल को छोड़कर सब कुछ एक-दूसरे से अलग नहीं है।
वहाँ वैसे भी मैं इस के आसपास हो सकता है? क्या सर्विसस्टैक में किसी प्रकार की विशेषता है कि मैं अपने प्रत्येक अनुरोध, प्रतिक्रिया डीटीओ और सेवा वर्गों को सजा सकता हूं; ताकि वे सेवा खोज/मेटा पृष्ठों को उचित रूप से पॉप्युलेट कर सकें?
यदि ऐसा कुछ नहीं है, तो मैं अपनी आवश्यकता को कैसे प्राप्त कर सकता हूँ? क्या प्लगइन या कुछ बनाकर सर्विसस्टैक के व्यवहार को संशोधित किया जा सकता है?
चीयर्स!
1 उत्तर
सर्विसस्टैक का मेटाडेटा पृष्ठ अनुकूलन योग्य नहीं है, लेकिन आपको आसानी से अपना स्वयं का अनुकूलित दृश्य बनाने में सक्षम होना चाहिए यह प्रदर्शित होता है कि आप कैसे पसंद करते हैं। आपकी सेवाओं के बारे में मेटाडेटा सर्विसस्टैक IAppHost.Metadata
एपीआई से उपलब्ध है जो एक पॉप्युलेट ServiceMetadata ऑब्जेक्ट ग्राफ़।
अगर आप #Script पेज को सक्षम करते हैं तो आप संग्रह को वैश्विक के रूप में पंजीकृत कर सकते हैं > चर:
Plugins.Add(new SharpPagesFeature {
Args = {
{"meta", HostContext.Metadata},
}
});
फिर /metaview.html
जैसे कस्टम पेज में आप अपनी पसंद के अनुसार सेवाओं को ग्रुप, सॉर्ट और ऑर्डर कर सकते हैं, उदा। यहां ग्रुपिंग नामस्थान के आधार पर उपलब्ध संचालन और प्रत्येक ऑपरेशन JSON मेटाडेटा पृष्ठ के लिए एक लिंक प्रदर्शित करने का एक उदाहरण दिया गया है:
{{ meta.Operations |> groupBy => it.RequestType.Namespace |> to => namespaces }}
{{#each namespaces}}
<b>{{it.Key}}</b>
<ul>{{#each it}}<li><a href="/json/metadata?op={{it.Name}}">{{it.Name}}</a></li>{{/each}}</ul>
{{/each}}
यह meta
संग्रह आपके डीबग इंस्पेक्टर में उपलब्ध है जो आपको एक इंटरैक्टिव आप अपनी सेवाओं को कैसे प्रदर्शित करना चाहते हैं, इस पर त्वरित प्रतिक्रिया के साथ खेल का मैदान जिसे आप अपने /metadata/debug पेज में पेस्ट कर सकते हैं। आउटपुट देखने के लिए:
यह आपको लेआउट के साथ शीघ्रता से प्रयोग करने की अनुमति देता है, उदा. अगर आप सिर्फ अपनी खुद की और सर्विसस्टैक सेवाओं में से कोई भी दिखाना चाहते हैं तो आप इसे फ़िल्टर कर सकते हैं जैसे:
{{ meta.Operations |> groupBy => it.RequestType.Namespace |> to => namespaces }}
{{#each namespaces where !it.Key.startsWith('ServiceStack') }}
<b>{{it.Key}}</b>
<ul>{{#each it}}<li><a href="/json/metadata?op={{it.Name}}">{{it.Name}}</a></li>{{/each}}</ul>
{{/each}}
अगर आप #Script पर नए हैं, तो मैं आपको #Script के इंटरैक्टिव LINQ उदाहरण के बारे में अभ्यास में जानने के लिए।
बेशक आप ServiceStack.Razor का भी उपयोग कर सकते हैं यदि यह आपकी प्राथमिकता है जिसे आप अपने रेजर में एक्सेस कर सकते हैं .cshtml
पेज HostContext.Metadata
सिंगलटन से।