武士刀OWIN版本控制
本文关键字:版本控制 OWIN 武士刀 | 更新日期: 2023-09-27 18:37:14
我是 ASP.net,武士刀等的新手,但学得很快。 最佳做法之一是对控制器使用版本。 例如:
http://localhot.com:7301/api/v1/{控制器}/{连接} http://localhot.com:7301/api/v2/{控制器}/{连接}
启动.cs :
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{version}/{controller}/{conn}/{cmd}",
defaults: new
{
conn = RouteParameter.Optional,
cmd = RouteParameter.Optional
}
);
连接控制器.cs(这有效)
[RoutePrefix("v1/Connection")]
public class ConnectionController : ApiController
{
public List<RadioComConnConfig> Get()
{
var state = ServerState.Create();
var conList = new List<RadioComConnConfig>();
foreach( var act in state.ActiveRadios)
{
conList.Add(act.CommPort);
}
return conList;
}
这不行
[RoutePrefix("v1/Connection")]
public class V1ConnectionController : ApiController
{
public List<RadioComConnConfig> Get()
{
var state = ServerState.Create();
var conList = new List<RadioComConnConfig>();
我错过了什么?
你可以摆脱旧式的配置路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{version}/{controller}/{conn}/{cmd}",
defaults: new
{
conn = RouteParameter.Optional,
cmd = RouteParameter.Optional
}
);
并仅使用属性 ruoting(就像您正在做的那样)。
在您的WebApiConfig
评论中,请对此发表评论:
// config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{version}/{controller}/{conn}/{cmd}",
// defaults: new
// {
// conn = RouteParameter.Optional,
// cmd = RouteParameter.Optional
// }
// );
并使用它:
// Web API routes
config.MapHttpAttributeRoutes();
控制器顶部的路由前缀应如下所示:
[RoutePrefix("api/v1")]
或
[RoutePrefix("api/v2")]
并定义操作的路由:
[Route("Connection")]
public List<RadioComConnConfig> Get()
{
}