c# - 如何将 url 重定向到特定端点
问题描述
我需要在 Web 项目中添加一个 api 端点(=> WebSiteUrl/api/token)。
问题是这个项目已经有一个名为“ApiController”的基本控制器,它有多个动作。我不能使用这个控制器,因为它是基本控制器而不是 ApiController。
有没有办法设置 WebSiteUrl/api/token 端点,尽管已经有一个控制器正在使用路由 WebSiteUrl/api/actions ?
我已经创建了一个使用以下路由的 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 设置 ""launchUrl": ""
推荐阅读
- dax - 带滤波器的功率枢轴标准偏差
- javascript - 在节点js中的json文件中搜索和更新值
- html - 如何在 Ionic-Angular 中动态更改图标颜色?
- mysql - 使用数据处理程序导入后,Solr 未返回所有文档
- python - 如何找到 python 库路径?
- arrays - 如何用两个字符替换数组中的特定字符
- java - java 中的 addFirst 和 removeFirst 方法无法正常工作(链接的 LIst)
- java - Selenium Java:下拉项动态更新
- amazon-web-services - AWS 安全组在哪个 OSI 层运行?
- python - Python,四连杆角度-时间图