在ASP.net核心API的路线

在ASP.net核心API的路线

问题描述:

我在Asp.net核心阅读了很多关于API路线的话题,但是我无法让它工作。在ASP.net核心API的路线

首先,这是我的控制器:

Public class BXLogsController : Controller 
{ 
    //[HttpGet("api/[controller]/ID/{id}", Name = "GetL")] 
    public IActionResult GetById(string id) 
    { 
     if (id.Trim() == "") 
      return BadRequest(); 
     else 
     { 
      Logs l = AccessBase.AccBase.GetLog(id); 
      return Json(l); 
     } 
    } 

    //[HttpGet("api/[controller]/API/{apiname}", Name = "GetLAPI")] 
    public IActionResult GetByAPI(string apiname) 
    { 
     if (apiname.Trim() == "") 
      return BadRequest(); 
     else 
     { 
      List<Logs> lstLogs = AccessBase.AccBase.GetLogsApi(apiname); 
      return Json(lstLogs); 
     } 
    } 
} 

我试图用HttpGetAttribute与路径(见注释),但不起作用。

所以我想用MapRoute的方法,但那也行不通。

app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "LogsId", 
       template: "api/[controller]/ID/{id}", 
       defaults: new { controller = "BXLogs", action = "GetById" }); 

      routes.MapRoute(
       name: "LogsAPI", 
       template: "api/[controller]/API/{apiname}", 
       defaults: new { controller = "BXLogs", action = "GetByAPI" }); 
     }); 

我一定已经忘记了一些东西,但我什么也没看到。

任何人都可以帮到我吗?

+0

确保有没有重复的路线。 –

试试这个。您可以在控制器上放置一个通用路由前缀。

[Route("api/[controller]")] 
public class BXLogsController : Controller { 
    //GET api/BXlogs/id/blah 
    [HttpGet("ID/{id}", Name = "GetL")] 
    public IActionResult GetById(string id) { ... } 

    //GET api/BXlogs/api/blahapi 
    [HttpGet("API/{apiname}", Name = "GetLAPI")] 
    public IActionResult GetByAPI(string apiname) { ... } 
} 

阅读了关于属性的路由在这里Routing to Controller Actions

+1

或者本教程:[https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api](https://docs.microsoft.com/zh-cn/aspnet/core /教程/第一的Web-API) – paulroho