Asp.net web api 如何向ASP.Net核心API路由添加变量前缀?
我有一个ASP.Net核心API web应用程序 控制器的定义如下:Asp.net web api 如何向ASP.Net核心API路由添加变量前缀?,asp.net-web-api,asp.net-core,routes,Asp.net Web Api,Asp.net Core,Routes,我有一个ASP.Net核心API web应用程序 控制器的定义如下: [Route("/api/[controller]")] [ApiController] public class ValuesController : ControllerBase { // GET api/values [HttpGet] public ActionResult<IEnumerable<string>> Get()
[Route("/api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
}
[Route("/[customername]/api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
// TODO: Somehow get the value of [customername]?
return new string[] { "value1", "value2" };
}
}
我希望能够使用表示客户的变量路径调用API。例如,我想这样做:
[Route("/api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
}
[Route("/[customername]/api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
// TODO: Somehow get the value of [customername]?
return new string[] { "value1", "value2" };
}
}
这可能吗?只需使用路由参数:
[Route("{customername}/api/[controller]")]
动作需要参数,不一定。仅仅因为路由参数存在并不意味着您的操作必须接受它。OP可以选择使用动作过滤器或覆盖控制器中执行的类似OnAction的内容,例如,手动访问参数。