gpt4 book ai didi

c# - WebAPI C# 路由

转载 作者:行者123 更新时间:2023-12-01 19:44:47 26 4
gpt4 key购买 nike

我有两个端点:

  • api/v1/user/session(用于通过发布请求创建用户登录)
  • api/v1/user(用于通过发布请求创建用户)

如何在同一 Controller 中路由这两个端点?我还想指定针对特定请求的操作。更清楚:

所有 get、post、update、patch 操作都可以在 api/v1/user/session 端点中完成

所有 get、post、update、patch 操作都可以在 api/v1/user 端点中完成

可能吗?

示例:

config.Routes.MapHttpRoute(
"UserApi",
"api/v1/{controller}/session",
new { controller = "User", action="Session" });

现在,我希望所有其余请求都适用于具有 [httpPost]、[httpGet] 等属性的 Session 方法。

       config.Routes.MapHttpRoute("lol", "api/v1/{controller}/session", 
new { controller = "User", action="Session" });

//config.Routes.MapHttpRoute(
// name: "LoginApi",
// routeTemplate: "api/v1/{controller}",
// defaults: new { controller = "User"}
//);

config.Routes.MapHttpRoute(
name: "RailStationApi",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

最佳答案

我建议您查看attribute routing - 这比使用中央配置更容易指定。

[RoutePrefix("api/v1")]
public class UserController : ApiController {

[HttpPost]
[Route("user/session")]
public void Login(/*...*/) {
// ...
}

[HttpGet]
[Route("user/session")] // Note this has the same route as Login
public SessionResult GetSession(/*...*/) {
// ...
}

[HttpPost]
[Route("user")]
public void CreateUser(/*...*/) {
// ...
}

}

请注意,从技术上讲,您不需要 [HttpPost],因为它是默认值,但为了清楚起见,我将其包含在内。您可以用相同的方式添加其他 Http 动词的方法。

关于c# - WebAPI C# 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29823124/

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