paint-brush
.NET 8 वेब एपीआई में महारत कैसे हासिल करें: सेटअप से सुरक्षा तक - सर्वोत्तम 50 युक्तियाँद्वारा@ssukhpinder
877 रीडिंग
877 रीडिंग

.NET 8 वेब एपीआई में महारत कैसे हासिल करें: सेटअप से सुरक्षा तक - सर्वोत्तम 50 युक्तियाँ

द्वारा Sukhpinder Singh22m2024/04/03
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

.NET CLI का उपयोग करके प्रारंभिक प्रोजेक्ट सेटअप से लेकर मिडलवेयर, कंट्रोलर और सेवाओं को कॉन्फ़िगर करने तक, एक मजबूत API बनाने के लिए हर चरण को जानें। स्केलेबल, कुशल वेब एप्लिकेशन बनाने के लिए निर्भरता इंजेक्शन, एसिंक्रोनस क्रियाओं और अपवादों को संभालने के लिए सर्वोत्तम अभ्यासों की खोज करें।
featured image - .NET 8 वेब एपीआई में महारत कैसे हासिल करें: सेटअप से सुरक्षा तक - सर्वोत्तम 50 युक्तियाँ
Sukhpinder Singh HackerNoon profile picture
0-item
1-item
2-item
3-item
4-item

.NET CLI का उपयोग करके प्रारंभिक प्रोजेक्ट सेटअप से लेकर मिडलवेयर, कंट्रोलर और सेवाओं को कॉन्फ़िगर करने तक, एक मजबूत API बनाने के लिए हर चरण को जानें। स्केलेबल, कुशल वेब एप्लिकेशन बनाने के लिए निर्भरता इंजेक्शन, एसिंक्रोनस क्रियाओं और अपवादों को संभालने के लिए सर्वोत्तम अभ्यासों की खोज करें।

1. .NET 8 वेब API प्रोजेक्ट सेट अप करना

अवधारणा

एक नया वेब एपीआई प्रोजेक्ट बनाने के लिए .NET CLI का उपयोग करें। यह स्टार्टअप के लिए Program.cs और उदाहरण के तौर पर WeatherForecast कंट्रोलर सहित एक बुनियादी प्रोजेक्ट संरचना सेट करता है।

कोड उदाहरण

 dotnet new webapi -n MyWebApi

2. Program.cs — न्यूनतम API कॉन्फ़िगरेशन

अवधारणा

.NET 8 न्यूनतम API की प्रवृत्ति को जारी रखता है, जिससे आप सीधे Program.cs फ़ाइल में सरलीकृत और संक्षिप्त तरीके से सेवाओं और समापन बिंदुओं को कॉन्फ़िगर कर सकते हैं।

कोड उदाहरण

 var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.MapGet("/", () => "Hello, World!"); app.Run();

3. नियंत्रक को परिभाषित करना

अवधारणा

नियंत्रक आने वाले HTTP अनुरोधों को संभालते हैं और क्लाइंट को जवाब देते हैं। उन्हें ControllerBase से विरासत में प्राप्त करके और [ApiController] के साथ एनोटेट करके परिभाषित किया जाता है।

कोड उदाहरण

 [ApiController] [Route("[controller]")] public class MyController : ControllerBase { [HttpGet] public IActionResult Get() => Ok("Hello from MyController"); }

4. नियंत्रकों में निर्भरता इंजेक्शन

अवधारणा

.NET Core का बिल्ट-इन डिपेंडेंसी इंजेक्शन (DI) डिपेंडेंसी को मैनेज करना आसान बनाता है। आप अपने कंट्रोलर में उनके कंस्ट्रक्टर के ज़रिए सेवाएँ इंजेक्ट कर सकते हैं।

कोड उदाहरण

 public class MyService { public string GetMessage() => "Injected message"; } public class MyController : ControllerBase { private readonly MyService _myService; public MyController(MyService myService) { _myService = myService; } [HttpGet] public IActionResult Get() => Ok(_myService.GetMessage()); }

5. सेवाएँ कॉन्फ़िगर करना

अवधारणा

सेवाएँ (जैसे डेटाबेस संदर्भ, कस्टम सेवाएँ, आदि) Program.cs फ़ाइल में कॉन्फ़िगर की जाती हैं, जिससे वे आपके संपूर्ण अनुप्रयोग में निर्भरता इंजेक्शन के लिए उपलब्ध हो जाती हैं।

कोड उदाहरण

 builder.Services.AddScoped<MyService>();

6. पर्यावरण-आधारित कॉन्फ़िगरेशन

अवधारणा

.NET वातावरण-विशिष्ट कॉन्फ़िगरेशन फ़ाइलों (appsettings.json, appsettings.Development.json, आदि) का समर्थन करता है, जो अनुप्रयोग के वातावरण के आधार पर विभिन्न सेटिंग्स की अनुमति देता है।

कोड उदाहरण

 // appsettings.Development.json { "Logging": { "LogLevel": { "Default": "Debug" } } }

7. मिडलवेयर

अवधारणा

मिडलवेयर घटक एक पाइपलाइन बनाते हैं जो अनुरोधों और प्रतिक्रियाओं को संभालता है। लॉगिंग या त्रुटि प्रबंधन जैसी क्रॉस-कटिंग चिंताओं के लिए कस्टम मिडलवेयर बनाया जा सकता है।

कोड उदाहरण

 app.Use(async (context, next) => { // Custom logic before passing to the next middleware await next(); // Custom logic after executing the next middleware });

8. रूटिंग

अवधारणा

.NET वेब API में रूटिंग नियंत्रकों और क्रिया विधियों पर विशेषता रूटिंग के माध्यम से प्राप्त की जाती है। यह URL को सीधे नियंत्रक क्रियाओं पर मैप करने की अनुमति देता है।

कोड उदाहरण

 [HttpGet("myaction/{id}")] public IActionResult GetAction(int id) => Ok($"Action with ID = {id}");

9. मॉडल बाइंडिंग

अवधारणा

मॉडल बाइंडिंग HTTP अनुरोधों से डेटा को स्वचालित रूप से एक्शन मेथड पैरामीटर्स में मैप करता है। यह JSON बॉडी और क्वेरी स्ट्रिंग पैरामीटर्स सहित जटिल प्रकारों का समर्थन करता है।

कोड उदाहरण

 public class MyModel { public int Id { get; set; } public string Name { get; set; } } [HttpPost] public IActionResult PostAction([FromBody] MyModel model) => Ok(model);

10. डेटा सत्यापन

अवधारणा

डेटा एनोटेशन का उपयोग मॉडल डेटा को मान्य करने के लिए किया जा सकता है। [ApiController] विशेषता स्वचालित रूप से सत्यापन को लागू करती है, यदि मॉडल अमान्य है तो 400 के साथ प्रतिक्रिया करती है।

कोड उदाहरण

 public class MyModel { [Required] public int Id { get; set; } [StringLength(100)] public string Name { get; set; } }

11. अतुल्यकालिक क्रियाएँ

अवधारणा

एसिंक्रोनस क्रियाएँ I/O संचालन के पूरा होने की प्रतीक्षा करते समय थ्रेड्स को मुक्त करके स्केलेबिलिटी में सुधार करती हैं। async कीवर्ड का उपयोग करें, और Task या Task<IActionResult> लौटाएँ।

कोड उदाहरण

 [HttpGet("{id}")] public async Task<IActionResult> GetAsync(int id) { var result = await _service.GetByIdAsync(id); return Ok(result); }

12. वैश्विक स्तर पर अपवादों को संभालना

अवधारणा

वैश्विक अपवाद प्रबंधन, केंद्रीकृत त्रुटि प्रसंस्करण, लॉगिंग और अनहैंडल किए गए अपवादों पर मानकीकृत API प्रतिक्रियाओं की अनुमति देता है।

कोड उदाहरण

 app.UseExceptionHandler(a => a.Run(async context => { var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>(); var exception = exceptionHandlerPathFeature.Error; // Log the exception, generate a custom response, etc. context.Response.StatusCode = 500; await context.Response.WriteAsJsonAsync(new { Error = "An unexpected error occurred" }); }));

13. एपीआई संस्करण

अवधारणा

API वर्शनिंग समय के साथ API में होने वाले बदलावों को प्रबंधित करने में मदद करती है। .NET प्लेटफ़ॉर्म क्वेरी स्ट्रिंग, URL पथ या अनुरोध हेडर के माध्यम से वर्शनिंग का समर्थन करता है।

कोड उदाहरण

 builder.Services.AddApiVersioning(options => { options.AssumeDefaultVersionWhenUnspecified = true; options.DefaultApiVersion = new ApiVersion(1, 0); options.ReportApiVersions = true; });

14. सामग्री वार्ता

अवधारणा

सामग्री वार्ता, API को अनुरोध में स्वीकार हेडर के आधार पर प्रतिक्रिया के विभिन्न प्रारूपों को प्रस्तुत करने की अनुमति देती है, जिससे JSON, XML आदि प्रारूपों के लिए समर्थन सक्षम होता है।

कोड उदाहरण

 builder.Services.AddControllers() .AddXmlDataContractSerializerFormatters();

15. कस्टम JSON सीरियलाइज़ेशन सेटिंग्स

अवधारणा

JSON सीरिएलाइजर सेटिंग्स को कॉन्फ़िगर करके JSON प्रतिक्रिया स्वरूपण को अनुकूलित करें, जैसे कि कैमलकेस नामकरण या शून्य मानों को अनदेखा करना।

कोड उदाहरण

 builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; options.JsonSerializerOptions.IgnoreNullValues = true; });

16. CORS को कॉन्फ़िगर करना

अवधारणा

क्रॉस-ऑरिजिन रिसोर्स शेयरिंग (CORS) आपके API को अलग-अलग डोमेन पर होस्ट किए गए वेब एप्लिकेशन से कॉल करने की अनुमति देता है। अपनी आवश्यकताओं के अनुसार CORS नीति को कॉन्फ़िगर करें।

कोड उदाहरण

 builder.Services.AddCors(options => { options.AddPolicy("AllowSpecificOrigin", builder => builder.WithOrigins("http://example.com")); }); app.UseCors("AllowSpecificOrigin");

17. प्रमाणीकरण

अवधारणा

प्रमाणीकरण सक्षम करके अपने API को सुरक्षित करें, जो अनुरोध करने वाले उपयोगकर्ताओं या सेवाओं की पहचान सत्यापित करता है।

कोड उदाहरण

 builder.Services.AddAuthentication("Bearer") .AddJwtBearer(options => { options.Authority = "https://your-auth-server"; options.Audience = "your-api"; });

18. प्राधिकरण

अवधारणा

प्रमाणीकरण के बाद, प्राधिकरण यह निर्धारित करता है कि प्रमाणीकृत उपयोगकर्ता के पास कोई कार्य करने या किसी संसाधन तक पहुंचने की अनुमति है या नहीं।

कोड उदाहरण

 [Authorize] public class SecureController : ControllerBase { // Action methods here }

19. स्वैगर/ओपनएपीआई एकीकरण

अवधारणा

स्वैगर (ओपनएपीआई) आपके एपीआई के लिए इंटरैक्टिव दस्तावेज उपलब्ध कराता है, जिससे डेवलपर्स इसे आसानी से समझ और उपयोग कर सकते हैं।

कोड उदाहरण

 builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); app.UseSwagger(); app.UseSwaggerUI();

20. लॉगिंग

अवधारणा

.NET Core एक अंतर्निहित लॉगिंग फ्रेमवर्क प्रदान करता है जो विभिन्न आउटपुट (कंसोल, डिबग विंडो, बाहरी सेवाएं, आदि) पर संदेशों को लॉग कर सकता है।

कोड उदाहरण

 logger.LogInformation("This is an informational message"); app.Use(async (context, next) => { logger.LogError("This is an error message before the next middleware"); await next.Invoke(); // Log after calling the next middleware });

21. एंटिटी फ्रेमवर्क कोर का उपयोग करना

अवधारणा

एंटिटी फ्रेमवर्क कोर एक ORM है जिसका उपयोग .NET अनुप्रयोगों में डेटा एक्सेस के लिए किया जाता है। यह आपको दृढ़ता से टाइप किए गए ऑब्जेक्ट का उपयोग करके डेटा को क्वेरी और हेरफेर करने की अनुमति देता है।

कोड उदाहरण

 public class MyDbContext : DbContext { public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) {} public DbSet<MyModel> MyModels { get; set; } }

22. एंटिटी फ्रेमवर्क कोर में माइग्रेशन

अवधारणा

माइग्रेशन आपको अपने डेटा मॉडल में परिवर्तनों को ट्रैक करके अपने डेटाबेस स्कीमा पर संस्करण नियंत्रण लागू करने की अनुमति देता है।

कोड उदाहरण

 dotnet ef migrations add InitialCreate dotnet ef database update

23. रिपोजिटरी पैटर्न

अवधारणा

रिपॉजिटरी पैटर्न डेटा परत को अमूर्त बनाता है, जिससे आपका एप्लिकेशन अधिक मॉड्यूलर हो जाता है और उसका रखरखाव आसान हो जाता है।

कोड उदाहरण

 public interface IRepository<T> { Task<IEnumerable<T>> GetAllAsync(); Task<T> GetByIdAsync(int id); // Other methods... } public class MyRepository<T> : IRepository<T> where T : class { private readonly MyDbContext _context; public MyRepository(MyDbContext context) { _context = context; } // Implement methods... }

24. यूनिट परीक्षण

अवधारणा

यूनिट परीक्षण कोड की अलग-अलग इकाइयों का अलग-अलग परीक्षण करके यह सुनिश्चित करता है कि आपका वेब एपीआई सही ढंग से कार्य कर रहा है।

कोड उदाहरण

 public class MyControllerTests { [Fact] public async Task Get_ReturnsExpectedValue() { // Arrange var serviceMock = new Mock<IMyService>(); serviceMock.Setup(service => service.GetAsync()).ReturnsAsync("test"); var controller = new MyController(serviceMock.Object); // Act var result = await controller.Get(); // Assert Assert.Equal("test", result.Value); } }

25. फ्रंट-एंड के साथ एकीकरण

अवधारणा

.NET वेब एपीआई फ्रंट-एंड एप्लिकेशन के लिए बैकएंड के रूप में काम कर सकता है, तथा RESTful सेवाएं प्रदान कर सकता है।

कोड उदाहरण

 fetch('https://localhost:5001/mycontroller') .then(response => response.json()) .then(data => console.log(data));

26. स्वास्थ्य जांच

अवधारणा

स्वास्थ्य जांच आपके एप्लिकेशन और इसकी निर्भरताओं की स्थिति की निगरानी करने का एक तरीका प्रदान करती है, जो माइक्रोसर्विस आर्किटेक्चर के लिए उपयोगी है।

कोड उदाहरण

 builder.Services.AddHealthChecks(); app.MapHealthChecks("/health");

27. वास्तविक समय संचार के लिए सिग्नलआर का उपयोग करना

अवधारणा

सिग्नलआर वास्तविक समय वेब कार्यक्षमता को सक्षम बनाता है, जिससे सर्वर-साइड कोड क्लाइंट-साइड वेब अनुप्रयोगों को अतुल्यकालिक सूचनाएं भेजने में सक्षम होता है।

कोड उदाहरण

 public class MyHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } }

28. प्रतिक्रिया कैशिंग कॉन्फ़िगर करना

अवधारणा

प्रतिक्रिया कैशिंग, पहले से अनुरोधित संसाधनों की एक प्रतिलिपि संग्रहीत करके सर्वर द्वारा संभाले जाने वाले अनुरोधों की संख्या को कम कर देता है।

कोड उदाहरण

 [HttpGet("{id}")] [ResponseCache(Duration = 60)] public IActionResult GetById(int id) { // Retrieve and return your resource }

29. स्थैतिक फ़ाइलें

अवधारणा

.NET वेब API के साथ फ्रंट-एंड अनुप्रयोगों को समर्थन देने के लिए स्थैतिक फ़ाइलें (HTML, CSS, JavaScript, आदि) प्रदान करना आवश्यक है।

कोड उदाहरण

 app.UseStaticFiles(); // Enable static file serving

30. उन्नत कॉन्फ़िगरेशन और विकल्प पैटर्न

अवधारणा

विकल्प पैटर्न संबंधित सेटिंग्स के समूहों का प्रतिनिधित्व करने के लिए कक्षाओं का उपयोग करता है। IOptions<T> का उपयोग करके, आप अपने एप्लिकेशन में कहीं भी इन सेटिंग्स तक पहुँच सकते हैं।

कोड उदाहरण

 public class MySettings { public string Setting1 { get; set; } // Other settings } builder.Services.Configure<MySettings>(builder.Configuration.GetSection("MySettings")); public class MyService { private readonly MySettings _settings; public MyService(IOptions<MySettings> settings) { _settings = settings.Value; } // Use _settings.Setting1 }

31. कस्टम मिडलवेयर

अवधारणा

मिडलवेयर एक ऐसा सॉफ़्टवेयर है जिसे अनुरोधों और प्रतिक्रियाओं को संभालने के लिए एप्लिकेशन पाइपलाइन में इकट्ठा किया जाता है। विशिष्ट कार्यों को करने के लिए कस्टम मिडलवेयर बनाया जा सकता है।

कोड उदाहरण

 public class MyCustomMiddleware { private readonly RequestDelegate _next; public MyCustomMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext httpContext) { // Pre-processing logic here await _next(httpContext); // Call the next middleware in the pipeline // Post-processing logic here } } // Extension method for easy middleware registration public static class MyCustomMiddlewareExtensions { public static IApplicationBuilder UseMyCustomMiddleware(this IApplicationBuilder builder) { return builder.UseMiddleware<MyCustomMiddleware>(); } }

32. दर सीमित करना

अवधारणा

दर सीमित करना आपके API को अति प्रयोग से बचाता है, यह सीमित करके कि एक उपयोगकर्ता एक निश्चित समय सीमा के भीतर कितनी बार अनुरोध कर सकता है।

कोड उदाहरण

 // Assume using a third-party library like AspNetCoreRateLimit builder.Services.AddInMemoryRateLimiting(); builder.Services.Configure<IpRateLimitOptions>(options => { options.GeneralRules = new List<RateLimitRule> { new RateLimitRule { Endpoint = "*", Limit = 100, Period = "1h" } }; });

33. एपीआई कुंजी प्रमाणीकरण

अवधारणा

API कुंजियाँ API कॉल को प्रमाणित और अधिकृत करने का एक सरल तरीका है। उन्हें क्लाइंट से सर्वर तक क्वेरी स्ट्रिंग या हेडर में भेजा जाता है।

कोड उदाहरण

 public class ApiKeyMiddleware { private readonly RequestDelegate _next; private const string APIKEYNAME = "x-api-key"; public ApiKeyMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { if (!context.Request.Headers.TryGetValue(APIKEYNAME, out var extractedApiKey)) { context.Response.StatusCode = 401; await context.Response.WriteAsync("API Key was not provided."); return; } // Validate the extracted API Key here... await _next(context); } }

34. आउटपुट कैशिंग

अवधारणा

आउटपुट कैशिंग आपको किसी अनुरोध के जवाब को संग्रहीत करने की अनुमति देता है। बाद के अनुरोधों को कैश से पूरा किया जा सकता है, जिससे प्रदर्शन में काफी सुधार होता है।

कोड उदाहरण

 [HttpGet] [ResponseCache(Duration = 120, Location = ResponseCacheLocation.Client, NoStore = false)] public IActionResult Get() { // Your logic here }

35. पृष्ठभूमि कार्य

अवधारणा

पृष्ठभूमि कार्य, उपयोगकर्ता के अनुरोधों से स्वतंत्र होकर पृष्ठभूमि में संचालन को सक्षम करते हैं, जैसे ईमेल भेजना या लंबे समय से चल रहे कार्यों को संसाधित करना।

कोड उदाहरण

 public class MyBackgroundService : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { // Your background task logic here await Task.Delay(TimeSpan.FromHours(1), stoppingToken); } } }

36. वेबसॉकेट

अवधारणा

वेबसॉकेट एकल, दीर्घकालिक कनेक्शन पर पूर्ण-द्वैध संचार चैनल प्रदान करते हैं, जो वास्तविक समय अनुप्रयोगों के लिए आदर्श है।

कोड उदाहरण

 app.UseWebSockets(); app.Use(async (context, next) => { if (context.WebSockets.IsWebSocketRequest) { WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync(); // Handle the WebSocket request here } else { await next(); } });

37. स्थानीयकरण का अनुरोध करें

अवधारणा

अनुरोध स्थानीयकरण, अनुरोध की जानकारी के आधार पर विभिन्न संस्कृतियों और भाषाओं के लिए सामग्री को स्थानीयकृत करने का एक तरीका प्रदान करता है।

कोड उदाहरण

 var supportedCultures = new[] { "en-US", "fr-FR" }; var localizationOptions = new RequestLocalizationOptions() .SetDefaultCulture(supportedCultures[0]) .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); app.UseRequestLocalization(localizationOptions);

38. ग्राफ़क्यूएल के साथ एकीकरण

अवधारणा

ग्राफ़क्यूएल एपीआई के लिए एक क्वेरी भाषा है। .NET वेब एपीआई को ग्राफ़क्यूएल के साथ एकीकृत करने से अधिक कुशल डेटा पुनर्प्राप्ति की अनुमति मिलती है।

कोड उदाहरण

 // Assume using a library like HotChocolate builder.Services .AddGraphQLServer() .AddQueryType<Query>(); app.MapGraphQL();

39. निगरानी और टेलीमेट्री

अवधारणा

मॉनिटरिंग और टेलीमेट्री में आपके एप्लिकेशन के प्रदर्शन और उपयोग के बारे में डेटा एकत्र करना, उसका विश्लेषण करना और उस पर कार्रवाई करना शामिल है।

कोड उदाहरण

 // Assume using Application Insights builder.Services.AddApplicationInsightsTelemetry("YOUR_INSTRUMENTATION_KEY");

40. सिग्नलआर हब और वास्तविक समय संचार

अवधारणा

सिग्नलआर एक लाइब्रेरी है जो ऐप्स में रीयल-टाइम वेब कार्यक्षमता जोड़ने को सरल बनाती है। रीयल-टाइम वेब कार्यक्षमता सर्वर कोड द्वारा कनेक्टेड क्लाइंट को तुरंत कंटेंट पुश करने की क्षमता है, जिससे सर्वर को क्लाइंट द्वारा नए डेटा का अनुरोध करने की प्रतीक्षा करने की आवश्यकता नहीं होती है। सिग्नलआर चैट एप्लिकेशन, रीयल-टाइम डैशबोर्ड और अधिक इंटरैक्टिव वेब एप्लिकेशन विकसित करने के लिए एकदम सही है।

कोड उदाहरण

 public class ChatHub : Hub { public async Task SendMessage(string user, string message) { // Call the broadcastMessage method to update clients. await Clients.All.SendAsync("broadcastMessage", user, message); } } // Startup or Program.cs app.MapHub<ChatHub>("/chathub");

Program.cs में एकीकरण:

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Other configurations... app.UseEndpoints(endpoints => { endpoints.MapHub<ChatHub>("/chathub"); }); }

41. एडवांस्ड एंटिटी फ्रेमवर्क कोर - रिलेशनशिप

अवधारणा

एंटिटी फ्रेमवर्क कोर, एंटिटीज के बीच जटिल संबंधों के मानचित्रण की अनुमति देता है, जैसे एक-से-एक, एक-से-अनेक, और अनेक-से-अनेक।

कोड उदाहरण

 public class Author { public int AuthorId { get; set; } public string Name { get; set; } public ICollection<Book> Books { get; set; } } public class Book { public int BookId { get; set; } public string Title { get; set; } public int AuthorId { get; set; } public Author Author { get; set; } }

42. कस्टम सत्यापन विशेषताएँ

अवधारणा

कस्टम सत्यापन विशेषताएँ आपको डेटा मॉडल के लिए अपने सत्यापन तर्क को परिभाषित करने की अनुमति देती हैं, जो अंतर्निहित सत्यापन विशेषताओं का विस्तार करती हैं।

कोड उदाहरण

 public class MyCustomValidationAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { // Your custom validation logic here if (value is int intValue && intValue > 0) { return ValidationResult.Success; } return new ValidationResult("Value must be positive"); } } public class MyModel { [MyCustomValidationAttribute] public int MyProperty { get; set; } }

43. उन्नत कॉन्फ़िगरेशन परिदृश्य

अवधारणा

.NET का विकल्प पैटर्न जटिल कॉन्फ़िगरेशन परिदृश्यों का समर्थन करता है, जिसमें नेस्टेड ऑब्जेक्ट्स, सूचियाँ और सत्यापन शामिल हैं।

कोड उदाहरण

 public class MyOptions { public MyNestedOptions Nested { get; set; } public List<string> Items { get; set; } } public class MyNestedOptions { public string Key { get; set; } } // In Program.cs or Startup.cs builder.Services.Configure<MyOptions>(builder.Configuration.GetSection("MyOptions"));

44. प्रदर्शन निगरानी और प्रोफाइलिंग

अवधारणा

किसी एप्लिकेशन की निगरानी और प्रोफाइलिंग से बाधाओं और अकुशलताओं की पहचान हो सकती है, जो प्रदर्शन को अनुकूलित करने के लिए आवश्यक है।

कोड उदाहरण

 app.UseMiniProfiler();

45. स्वैगर और XML टिप्पणियों के साथ API दस्तावेज़ीकरण

अवधारणा

अपने स्वैगर यूआई में XML टिप्पणियों को एकीकृत करके अपने API दस्तावेज़न को बेहतर बनाएं, जिससे आपके API का उपयोग करने वाले डेवलपर्स को बेहतर अनुभव प्राप्त हो।

कोड उदाहरण

 builder.Services.AddSwaggerGen(c => { var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); });

46. वैश्वीकरण और स्थानीयकरण

अवधारणा

वैश्वीकरण और स्थानीयकरण आपके एप्लिकेशन को कई भाषाओं और संस्कृतियों का समर्थन करने की अनुमति देता है, जिससे यह वैश्विक दर्शकों के लिए सुलभ हो जाता है।

कोड उदाहरण

 builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); app.UseRequestLocalization(app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);

47. सुरक्षा हेडर

अवधारणा

विभिन्न HTTP हेडर्स जोड़कर अपने वेब एप्लिकेशन की सुरक्षा में सुधार करने से आम हमलों और कमजोरियों से सुरक्षा मिल सकती है।

कोड उदाहरण

 app.UseHsts(); app.UseXContentTypeOptions(); app.UseReferrerPolicy(opts => opts.NoReferrer()); app.UseXXssProtection(options => options.EnabledWithBlockMode()); app.UseXfo(options => options.Deny());

48. फ़ीचर फ़्लैग

अवधारणा

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

कोड उदाहरण

 // Using a library like Microsoft.FeatureManagement builder.Services.AddFeatureManagement();

49. ब्लेज़र एकीकरण

अवधारणा

Blazor आपको जावास्क्रिप्ट के बजाय C# का उपयोग करके इंटरैक्टिव वेब UI बनाने की अनुमति देता है। Blazor को Web API के साथ एकीकृत करने से एक सहज पूर्ण-स्टैक विकास अनुभव मिलता है।

कोड उदाहरण

 // In a Blazor Server app @code { private IEnumerable<WeatherForecast> forecasts; protected override async Task OnInitializedAsync() { forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("WeatherForecast"); } }

50. प्रतिक्रिया संपीड़न के लिए उन्नत मिडलवेयर

अवधारणा

प्रतिक्रिया संपीड़न आपके API प्रतिक्रियाओं के आकार को कम कर सकता है, जिससे धीमे नेटवर्क पर क्लाइंट के लिए लोड समय में सुधार हो सकता है।

कोड उदाहरण

 builder.Services.AddResponseCompression(options => { options.Providers.Add<GzipCompressionProvider>(); options.EnableForHttps = true; }); app.UseResponseCompression();

C# प्रोग्रामिंग🚀

C# समुदाय का हिस्सा बनने के लिए धन्यवाद! जाने से पहले:

यदि आप यहाँ तक पहुँच गए हैं, तो कृपया ताली बजाकर अपनी प्रशंसा दिखाएँ, और लेखक का अनुसरण करें! 👏️️

हमारा अनुसरण करें: X | LinkedIn | Dev.to | Hashnode | न्यूज़लैटर | Tumblr

हमारे अन्य प्लेटफ़ॉर्म पर जाएँ: GitHub | Instagram | Tiktok | Quora | Daily.dev


यहां भी प्रकाशित