ImsApiVersioning 1.0.6
Program.cs
builder.Services.AddImsApiVersioning(option =>
{
option.DefaultVersion = 2;
option.SupportedVersion = ["1.0", "2.0"];
option.CurrentSetting = "all";
option.SwaggerTitle = "New company";
});
builder.Services.AddVersionResolver(builder.Configuration);
builder.Services.AddSwaggerGenCustom();
DI Register. It Register all the classes inherited by the interface
builder.Services.AddVersionedService<IClass>(ServiceLifetime.Scoped);
In App section Before app.UseRouting
app.UseImsApiVersioning();
app.UseSwagerUICustom();
app.UseRouting();
Class creation
public Interface IClass
{
string doSomething(string a,string b);
int Add (int a, int b);
}
public class ClassA:IClass
{
private readonly ILogger<ClassA> _logger;
public ClassA(ILogger<ClassA> logger)
{
_logger=logger;
}
public string doSomething(string a, string b)
{
return "I am Class A";
}
public virtual int Add (int a, int b)
{
return a+b;
}
}
public class ClassAv1:ClassA
{
private readonly ILogger<ClassAv1> _logger;
public ClassA(ILogger<ClassAv1> logger):base(logger)
{
_logger=logger;
}
public override int Add(int a,int b)
{
return a * b ;
}
}
public class ClassAv2:ClassA
{
private readonly ILogger<ClassAv1> _logger;
public ClassA(ILogger<ClassAv1> logger):base(logger)
{
_logger=logger;
}
public override int Add(int a,int b)
{
return base(a,b);
}
}
IN Endpoint
It swagger it will automatically added v1, v2 'as mention in option.DefaultVersion = 2; option.SupportedVersion = ["1.0", "2.0"];
While calling api endpoint
add v1 like api/v1/dosomething, api/v2/dosomething
Note
ClassAv1 will be resolved when api/v1 ClsasAv2 will be resloved when api/v2
No packages depend on ImsApiVersioning.
Previous way of Version factory is changed, Now it will resolve
iteself without versionfactory. You can still use it in previous version way.
.NET 8.0
- Microsoft.AspNetCore.Http (>= 2.3.0)
- Swashbuckle.AspNetCore (>= 9.0.6)