示例
1、准备两个版本的CitiesController.cs
删除不在需要的TestController.cs
Controllers文件夹下新建v1文件夹,将CitiesController.cs移动到v1中,弹出的对话框点击OK和Yes;
新建v2文件夹,拷贝一份CitiesController.cs,命名空间改成v2;
v2 CitiesController.cs如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using CitiesManager.WebAPI.DatabaseContext;
using CitiesManager.WebAPI.Models;
namespace CitiesManager.WebAPI.Controllers.v2
{
public class CitiesController : CustomControllerBase
{
private readonly ApplicationDbContext _context;
public CitiesController(ApplicationDbContext context)
{
_context = context;
}
// GET: api/Cities
/// <summary>
/// To get list of cities (including cityID nad city name) from 'cities'
table
/// </summary>
/// <returns></returns>
[HttpGet]
//[Produces("application/xml")]
public async Task<ActionResult<IEnumerable<string?>>> GetCities()
{
var cities = await _context.Cities.OrderBy(c => c.CityName).Select(c
=> c.CityName).ToListAsync();
return cities;
}
}
}
2、启用API版本
安装NuGet包
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.1.0"
/>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer"
Version="5.1.0" />
Program.cs中添加AddApiVersionin()
builder.Services.AddControllers(options =>
{
options.Filters.Add(new ProducesAttribute("application/json")); //Response
Body
options.Filters.Add(new ConsumesAttribute("application/json")); //Request
Body
}).AddXmlSerializerFormatters();
builder.Services.AddApiVersioning(config => {
config.ApiVersionReader = new UrlSegmentApiVersionReader();
});
更新CustomControllerBase.cs路由
[Route("api/v{version: apiVersion}/[controller]")]
[ApiController]
public class CustomControllerBase : ControllerBase
{
}
Controller添加ApiVersion Attribute
namespace CitiesManager.WebAPI.Controllers.v1
{
[ApiVersion("1.0")]
public class CitiesController : CustomControllerBase
结果
可以调用不同版本的Controller
Gitee获取源码:
https://gitee.com/huang_jianhua0101/asp.-net-core-8.git
标签:WebAPI,01,UrlSegmentApiVersionReader,CitiesController,API,context,cs,using,publi From: https://blog.csdn.net/KevinHuang2088/article/details/139843712