dms*_*las 2 c# asp.net-web-api
我有两个终点:
api/v1/user/session (用于创建带有发布请求的用户登录)api/v1/user (用于创建发布请求的用户)如何在同一个控制器中路由这两个端点?我还想为特定请求指定操作.更清楚:
所有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" });
Run Code Online (Sandbox Code Playgroud)
现在,我希望所有其他请求都适用于具有[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 }
);
Run Code Online (Sandbox Code Playgroud)
我建议你看看属性路由 - 这比使用中央配置要容易得多.
[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(/*...*/) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您在技术上并不需要,[HttpPost]因为它是默认设置,但为了清楚起见,我将其包括在内.您可以用相同的方式添加其他Http动词的方法.
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |