繁体   English   中英

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

[英]How to redirect url to specific endpoint

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

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

尽管已经有一个控制器在使用路由 WebSiteUrl/api/actions ,但有没有办法设置 WebSiteUrl/api/token 端点?

我已经创建了一个使用以下路由的 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]")] ),路径将是“websiteUrl/api/example”。 [controller]标签将匹配任何控制器名称。 因此,如果您将此控制器从 ExampleController 重命名为 TestController(您必须为控制器命名连接“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" };
    }
}

因此,如果您对“websiteUrl/api/token”运行获取请求,它将指向此,

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

如果要将 url 重定向到您想要的路径,请转到您项目中的 launchsettings.json,如果您使用的是 IISExpress,则在配置文件中的 json 文件中 --> IISExpress set ""launchUrl": ""

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM