如何将url重定向到特定的端点



我需要在web项目中添加一个api端点(=>WebSiteUrl/api/token(。

问题是这个项目已经有了一个基本的控制器;ApiController";具有多个动作。我不能使用这个控制器,因为它是一个基本控制器,而不是ApiController。

尽管已经有一个控制器在使用路由WebSiteUrl/api/actions,但是否有一种方法可以设置WebSiteUrl/api/令牌端点?

我已经创建了一个使用以下路由的apicontroller:WebSiteUrl/api/controller/action

谢谢你的帮助!

普通MVC控制器实现controller,如果你想创建一个API控制器,你必须创建一个将实现ControllerBase抽象类的控制器。

例如,API控制器将看起来像,

[Route("api/[controller]")]
[ApiController]
public class ExampleController : ControllerBase
{
[HttpGet('getall')]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
.......
}

我们可以从[Route()]属性配置路由。这里有一个命名控制器的约定,在"ExampleController"中,这里将被视为该控制器名称的"Example"。

因此,根据路由属性([Route("api/[controller]")](,路径将是"0";websiteUrl/api/example";。[controller]标记将与任何控制器名称匹配。因此,如果您将此控制器从ExampleController重命名为TestController(您必须连接"controller"以进行控制器命名,这是系统识别它的方式(,则路径将为"controller";websieUrl/api/test";用于该控制器。否则,您可以将路由硬编码为[Route("api/example")],这样它就不依赖于控制器名称。

根据您的要求,

[Route("api/token")]
[ApiController]
public class ExampleController : ControllerBase
{
// GET: api/token/
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}

因此,如果你运行一个get请求;websiteUrl/api/token";它将指向这个,

[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}

如果想将url重定向到您想要的路径,请转到项目上的launchsettings.json,如果您正在使用IISExpress,请在概要文件中的json文件中-->IISExpress集合"launchUrl":"quot;

最新更新