मेरे पास एक एपीआई रूटिंग है जो अब तक काम करती है:

    config.Routes.MapHttpRoute(
        name: "MyApi",
        routeTemplate: "api/v1/{param}/string1/string2",
        defaults: new { controller = "MyApi", ... })

नियंत्रक में, मेरे पास एक पोस्ट विधि है जो ठीक काम करती है, लेकिन मुझे इसे संशोधित करने की आवश्यकता है, जो ठीक है और यह काम करता है। समस्या निम्न है:

मुझे संगतता उद्देश्यों के लिए समापन बिंदु के पुराने संस्करण को छोड़ना होगा, निम्नलिखित मार्ग के साथ एक नया समापन बिंदु बनाना होगा: "api/v2/{param}/string1/string2"। मैं सौदा करता हूं, मैं उन्हें एक ही नियंत्रक (फ़ाइल) पर रखना चाहता हूं, इसलिए मैंने [Route("...")] का उपयोग करने के बारे में सोचा लेकिन दुर्भाग्य से, यह केवल मार्ग में तार जोड़ता है, और मुझे जो चाहिए वह v1 को v2 के लिए स्थानापन्न करना है। मार्ग, क्या ऐसा करने का कोई तरीका है?

मैंने एक वर्कअराउंड में सोचा जो नए मार्ग के साथ एक नया नियंत्रक बना रहा है, वही पैरामीटर, लेकिन इसे एक साथ रखने के बजाय इसे दूसरी फाइल में होना होगा। कोई सुझाव या ऐसा करने का यही एकमात्र तरीका है? अग्रिम में धन्यवाद। दुर्भाग्य से, लक्ष्य नेटवर्क 4.7.2 . है

1
Iria 14 अक्टूबर 2021, 12:11

1 उत्तर

सबसे बढ़िया उत्तर

सबसे पहले, मुझे नहीं लगता कि आप केवल कुछ कॉन्फ़िगरेशन के साथ संस्करण नियंत्रण का एहसास कर सकते हैं, लेकिन एक नई विधि या नया नियंत्रक नहीं जोड़ सकते क्योंकि मैं वास्तव में इसे आधिकारिक दस्तावेज़ में खोजने में विफल रहा। और यदि आप इस पद्धति को अद्वितीय रखने पर जोर देते हैं कि आप कोई नई विधि या फ़ाइल नहीं जोड़ेंगे, तो आप azure api management विचाराधीन। यह एक शानदार उपकरण है लेकिन उत्पादन के उपयोग के लिए थोड़ा महंगा है।

और जैसा कि आपने उल्लेख किया है कि आप अभी भी एप्लिकेशन में अपने कोड को नियंत्रित कर सकते हैं, मैं आपको संस्करण नियंत्रण का एहसास करने के लिए कुछ कोड जोड़ने की सलाह देता हूं। यह रहा एक ब्लॉग इसके बारे में कहा। और यह एट्रिब्यूशन [ApiVersion("1.0")] and [Route("api/{v:apiVersion}/employee")] के साथ अपने लक्ष्य को प्राप्त करने का एक समान तरीका प्रदान करता है।

इसके लिए एक nuget पैकेज Microsoft.AspNetCore.Mvc.Versioning की भी आवश्यकता होती है, जिसमें स्टार्टअप.cs . में कॉन्फ़िगरेशन होता है

public void ConfigureServices(IServiceCollection services)  
{  
    services.AddControllers();  
    services.AddApiVersioning(x =>  
    {  
        x.DefaultApiVersion = new ApiVersion(1, 0);  
        x.AssumeDefaultVersionWhenUnspecified = true;  
        x.ReportApiVersions = true;  
    });  
}  

और यह मेरा परीक्षा परिणाम है:

enter image description here

1
Tiny Wang 15 अक्टूबर 2021, 05:15