J'ai lu beaucoup de sujets sur les routes pour l'API dans le noyau Asp.net mais je ne peux pas le faire fonctionner.
Tout d'abord, voici mon contrôleur:
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);
}
}
}
J'ai essayé d'utiliser le HttpGetAttribute
avec le chemin (reportez-vous au commentaire) mais cela ne fonctionne pas.
Je veux donc utiliser l'approche MapRoute
mais cela ne fonctionne pas aussi.
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" });
});
J'ai dû oublier quelque chose mais je ne vois rien.
Est-ce que quelqu'un peut m'aider ?
Essaye ça. Vous pouvez mettre un préfixe de route commun sur le contrôleur.
[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) { ... }
}
lisez le routage des attributs ici Routage vers les actions du contrôleur