OpenAPI, Versioning और Deployment
Swagger/OpenAPI docs बनाएँ, APIs का versioning करें और Minimal API को Azure App Service या containers पर deploy करें।
OpenAPI, Versioning और Deployment, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Minimal APIs में OpenAPI
OpenAPI (जिसे पहले Swagger कहा जाता था) इंटरैक्टिव API दस्तावेज़ तैयार करता है। .NET 9 में AddOpenApi() अंतर्निहित है। पुराने संस्करणों के लिए Swashbuckle.AspNetCore का उपयोग करें।
Swashbuckle से Swagger जोड़ना
Swashbuckle इंस्टॉल करें, उसे सेवाओं में कॉन्फ़िगर करें और विनिर्देश तथा Swagger UI उपलब्ध कराने के लिए मिडलवेयर जोड़ें।
// dotnet add package Swashbuckle.AspNetCore
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(opt =>
opt.SwaggerDoc("v1", new() { Title = "Products API", Version = "v1" }));
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}OpenAPI के लिए एंडपॉइंट पर एनोटेशन लगाना
तैयार किए गए OpenAPI विनिर्देश को अधिक जानकारीपूर्ण बनाने के लिए Produces, ProducesProblem, WithSummary और WithDescription का उपयोग करें।
app.MapGet("/products/{id}", GetProduct)
.WithName("GetProductById")
.WithSummary("Get a product by ID")
.WithDescription("Returns the product matching the given numeric ID.")
.Produces<ProductDto>(200)
.Produces<ProblemDetails>(404)
.WithTags("Products");रूट समूहों के साथ API संस्करण निर्धारण
एक सरल संस्करण निर्धारण रणनीति में संस्करण से शुरू होने वाले रूट समूहों का उपयोग किया जाता है। मूल संस्करण निर्धारण के लिए किसी अतिरिक्त पैकेज की आवश्यकता नहीं होती।
var v1 = app.MapGroup("/api/v1").WithTags("v1");
var v2 = app.MapGroup("/api/v2").WithTags("v2");
v1.MapGet("/products", GetProductsV1);
v2.MapGet("/products", GetProductsV2); // different DTO shape
// Clients use /api/v1/products or /api/v2/productsहेडर या क्वेरी संस्करण निर्धारण के लिए Asp.Versioning
Asp.Versioning.Http पैकेज, OpenAPI के पूर्ण एकीकरण के साथ Minimal APIs में क्वेरी-स्ट्रिंग, हेडर-आधारित और URL-सेगमेंट संस्करण निर्धारण जोड़ता है।
// dotnet add package Asp.Versioning.Http
builder.Services.AddApiVersioning(opt =>
{
opt.DefaultApiVersion = new ApiVersion(1, 0);
opt.AssumeDefaultVersionWhenUnspecified = true;
opt.ApiVersionReader = new QueryStringApiVersionReader("api-version");
});
// /products?api-version=2.0
app.MapGet("/products", GetProducts)
.HasApiVersion(2, 0);प्रत्येक संस्करण के लिए अलग विनिर्देश बनाना
Swashbuckle को इस तरह कॉन्फ़िगर करें कि वह प्रत्येक संस्करण के लिए अलग OpenAPI दस्तावेज़ बनाए, ताकि उपभोक्ताओं को केवल उनके संस्करण से संबंधित एंडपॉइंट दिखाई दें।
builder.Services.AddSwaggerGen(opt =>
{
opt.SwaggerDoc("v1", new() { Title = "API", Version = "v1" });
opt.SwaggerDoc("v2", new() { Title = "API", Version = "v2" });
});
app.UseSwaggerUI(opt =>
{
opt.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
opt.SwaggerEndpoint("/swagger/v2/swagger.json", "v2");
});स्व-निहित बाइनरी प्रकाशित करना
अपने Minimal API को एक स्व-निहित सिंगल बाइनरी के रूप में प्रकाशित करें — लक्ष्य मशीन पर .NET रनटाइम की आवश्यकता नहीं होगी।
# Publish for Linux x64 as self-contained
dotnet publish -c Release -r linux-x64 --self-contained true
# Run the output binary
./bin/Release/net9.0/linux-x64/publish/MyApi
# Optionally single-file:
# dotnet publish -c Release -r linux-x64 -p:PublishSingleFile=trueDocker के साथ कंटेनरीकरण
आधिकारिक .NET बेस इमेज का उपयोग करके API को Docker इमेज में पैकेज करें। बहु-चरणीय Dockerfile अंतिम इमेज को छोटा रखता है।
# Dockerfile (multi-stage)
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:9.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApi.dll"]
# Build and run
# docker build -t my-api .
# docker run -p 8080:8080 my-apiAzure App Service पर परिनियोजन
CLI से सीधे Azure App Service पर परिनियोजित करें। यह सेवा स्केलिंग, प्रमाणपत्र और कस्टम डोमेन संभालती है।
# Publish to folder first
dotnet publish -c Release -o ./publish
# Deploy to Azure App Service
az webapp up \
--name my-products-api \
--resource-group myRG \
--runtime DOTNETCORE:9.0 \
--sku B1
# View logs
az webapp log tail --name my-products-api --resource-group myRGस्वास्थ्य जाँच
स्वास्थ्य-जाँच एंडपॉइंट जोड़ें, ताकि ऑर्केस्ट्रेटर (Kubernetes, Azure) यह सत्यापित कर सकें कि आपका API सक्रिय है और ट्रैफ़िक संभालने के लिए तैयार है।
builder.Services.AddHealthChecks()
.AddDbContextCheck<AppDbContext>()
.AddUrlGroup(new Uri("https://api.external.com/ping"), "external");
app.MapHealthChecks("/health");
app.MapHealthChecks("/health/ready", new HealthCheckOptions
{
Predicate = hc => hc.Tags.Contains("ready")
});वास्तविक उदाहरण: प्रोडक्शन जाँच-सूची
शुद्धता, निगरानी और सुरक्षा सुनिश्चित करने के लिए प्रोडक्शन Minimal API में ये सेटिंग शामिल होनी चाहिए।
// builder configuration
builder.Services.AddProblemDetails();
builder.Services.AddHealthChecks();
builder.Services.AddRateLimiter(...);
builder.Services.AddOutputCache();
// app pipeline
app.UseHttpsRedirection();
app.UseExceptionHandler();
app.UseRateLimiter();
app.UseOutputCache();
app.UseAuthentication();
app.UseAuthorization();
app.MapHealthChecks("/health");
// ... your endpoints
app.Run();त्वरित जाँच
कौन-सा मेथड Minimal APIs में एंडपॉइंट मेटाडेटा (Produces, WithSummary आदि) को OpenAPI टूलिंग के लिए दृश्यमान बनाता है?
पुनरावलोकन: OpenAPI, संस्करण निर्धारण और परिनियोजन
मुख्य बातें:
- AddEndpointsApiExplorer + Swashbuckle = Minimal APIs के लिए Swagger UI
- समृद्ध OpenAPI दस्तावेज़ों के लिए Produces, WithSummary, WithTags से एनोटेशन लगाएँ
- रूट समूहों के माध्यम से सरल संस्करण निर्धारण; उन्नत परिस्थितियों के लिए Asp.Versioning
- लचीले परिनियोजन के लिए स्व-निहित बाइनरी या Docker इमेज प्रकाशित करें
- Kubernetes/Azure की तत्परता जाँच के लिए स्वास्थ्य जाँच जोड़ें
एआई शिक्षक के साथ C# सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 93
- पाठ
- 346
अक्सर पूछे जाने वाले प्रश्न
क्या “OpenAPI, Versioning और Deployment” पाठ निःशुल्क है?
हाँ—“OpenAPI, Versioning और Deployment” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“OpenAPI, Versioning और Deployment” में मैं क्या सीखूँगा?
Swagger/OpenAPI docs बनाएँ, APIs का versioning करें और Minimal API को Azure App Service या containers पर deploy करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“OpenAPI, Versioning और Deployment” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- अपनी पहली Minimal API बनाना
- Route Groups, Parameters और Validation
- Minimal APIs में Middleware और Filters
- OpenAPI, Versioning और Deployment