How to make one controller with web API and non web API actions on the same controller.
When I make this, I have a 404 error for the non web API action.
I have read in differents article that it's possible to mix with ASP.NET core , but does not work.
Return 404 for:
- http://localhost:5000/board/index/1
http://localhost:5000/board/index?boardID=1
[Route("api/[controller]")] public class BoardController : Controller { private IDataContext dataContext; public BoardController(IDataContext dataContext) { this.dataContext = dataContext; } public IActionResult Index(int boardID) { return View(); } [HttpGet] public IEnumerable<Board> GetAll() { } }
Or
Return 404 for http://localhost:5000/api/board/
public class BoardController : Controller
{
private IDataContext dataContext;
public BoardController(IDataContext dataContext)
{
this.dataContext = dataContext;
}
public IActionResult Index(int boardID)
{
return View();
}
[HttpGet]
public IEnumerable<Board> GetAll()
{
}
}
I think I get my second solution and use http://localhost:5000/board/getall for API action
GetAllis a web-api-method andIndexis a action of the controller.GetAllshould be in a class like BoardRepository or BoardService. They both are completely different methods. You could callGetAllpossibly from another controller with e.g. different DependencyInjection.. simply, don't merge those two (and it's neither beautiful). You could call many different Services/WebApi-methods on many controllers. This just makes it difficult.