微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何将URL重定向到特定端点

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

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

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

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

感谢您的帮助!

解决方法

普通的MVC控制器实现了Controller,如果要创建API控制器,则必须创建一个将实现ControllerBase抽象类的控制器。

例如,API控制器看起来像

const personLastNameBetter = getPersonAttributeGen("lastName"); // string | undefined
const personAgeBetter = getPersonAttributeGen("age"); // number | undefined

我们可以从[Route("api/[controller]")] [ApiController] public class ExampleController : ControllerBase { [HttpGet('getall')] public IEnumerable<string> Get() { return new string[] { "value1","value2" }; } ....... } 属性配置路由。这是命名控制器的约定,在“ ExampleController”中,此控制器的名称将被视为“ Example”。

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

根据您的要求,您可以做

[Route("api/example")]

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

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

如果要将该URL重定向到所需的路径,请转到项目上的launchsettings.json,如果使用的是IISExpress,则在配置文件内的json文件中-> IISExpress设置““ launchUrl”:“”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。