Versioning your API
Adding new versions of custom Management APIs
[ApiVersion("1.0")]
[ApiVersion("2.0")]
public class MyItemApiController : ManagementApiControllerBase
{
[HttpGet]
[MapToApiVersion("1.0")]
public IActionResult GetAllItems(int skip = 0, int take = 10)
{
// ...
}
[HttpGet("{id:guid}")]
[MapToApiVersion("1.0")]
public IActionResult GetItem(Guid id)
{
// ...
}
[HttpPost]
[MapToApiVersion("1.0")]
public IActionResult CreateItem(string value)
{
// ...
}
[HttpPut("{id:guid}")]
[MapToApiVersion("1.0")]
public IActionResult UpdateItem(Guid id, string value)
{
// ...
}
[HttpDelete("{id:guid}")]
[MapToApiVersion("1.0")]
public IActionResult DeleteItem(Guid id)
{
// ...
}
[HttpGet("{id:guid}")]
[MapToApiVersion("2.0")]
public IActionResult GetItemV2(Guid id)
{
MyItem? item = AllItems.FirstOrDefault(item => item.Id == id);
return item is not null
? Ok(item)
: OperationStatusResult(
MyItemOperationStatus.NotFound,
builder => NotFound(
builder
.WithTitle("The item was not found")
.WithDetail("The item with the given ID did not exist.")
.Build()
)
);
}
[HttpPost]
[MapToApiVersion("2.0")]
public IActionResult CreateItemV2(string value)
{
var newItem = new MyItem(value);
AllItems.Add(newItem);
return CreatedAtId<MyItemApiController>(
ctrl => nameof(ctrl.GetItemV2),
newItem.Id
);
}
}Last updated
Was this helpful?