gpt4 book ai didi

c# - Katana OWIN 版本控制

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:37 44 4
gpt4 key购买 nike

我是 ASP.net、Katana 等的新手,但学得很快。最佳实践之一是为 Controller 使用版本。例如:

http://localhot.com:7301/api/v1/ { Controller }/{连接} http://localhot.com:7301/api/v2/ { Controller }/{连接}

启动.cs:

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{version}/{controller}/{conn}/{cmd}",
defaults: new
{
conn = RouteParameter.Optional,
cmd = RouteParameter.Optional
}
);

ConnectionController.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
}
);

并且只使用attribute 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();

你的 Controller 顶部的路由前缀应该是这样的:

[RoutePrefix("api/v1")]

[RoutePrefix("api/v2")]

并在你的 Action 上定义路线:

[Route("Connection")]
public List<RadioComConnConfig> Get()
{
}

关于c# - Katana OWIN 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27914754/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com