.NET Web API中的多个URL级别

前端之家收集整理的这篇文章主要介绍了.NET Web API中的多个URL级别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用新的.NET Web API设置休息服务,我遇到了一个小问题.我们希望有一个不同的路由,但我不知道如何实现这一点.
  1. public class FormController : ApiController
  2. {
  3.  
  4. // api/form
  5. public string Get()
  6. {
  7. return "OK-Get";
  8. }
  9. // api/form/method1
  10. public string Method1()
  11. {
  12. return "OK1";
  13. }
  14. // api/form/method2
  15. public string Method2()
  16. {
  17. return "OK2";
  18. }
  19. }

但这不起作用.如果我转到/ api / form / method2,我会得到OK-Get作为回复.

我认为这与路由有关,但我不确定,因为我之前没有使用过MVC.我已经尝试在WebApiConfig.cs中设置它:

  1. config.Routes.MapHttpRoute(
  2. name: "FormApi",routeTemplate: "api/form/{action}"
  3. );

但那没有做任何事.

解决方法

路由几乎是正确的但主要问题是您在其他操作方法上缺少必需的HttpMethod属性. [HttpGet]是因为它的名字而在第一种方法上推断出来的.这就是你需要的:
  1. public class FormController : ApiController
  2. {
  3. // api/form
  4. public string Get()
  5. {
  6. return "OK-Get";
  7. }
  8.  
  9. // api/form/method1
  10. [HttpGet]
  11. public string Method1()
  12. {
  13. return "OK1";
  14. }
  15.  
  16. // api/form/method2
  17. [HttpGet]
  18. public string Method2()
  19. {
  20. return "OK2";
  21. }
  22. }

使用属于App_Start / RouteConfig.cs的路由映射

  1. routes.MapHttpRoute(
  2. name: "FormApi",routeTemplate: "api/form/{action}",defaults: new { controller = "form",action = "Get"}
  3. );

有关更多信息,请阅读http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection

猜你在找的HTML相关文章