Issue
,将无法得到答复。哪个版本号?
发生了什么?
动作方法自定义路由如果不是以 / 开头,在不贴路由特性[Route("api/[controller]")]等时,能否默认合并控制器路由?
异常堆栈是什么?
⚠⚠ 必须提供完整可运行且包含错误的
Git
仓库 DEMO,DEMO 提供最简单的错误逻辑代码,否则将无法得到答复。⚠⚠
您的代码下载地址?
请提供安装的 Nuget
包版本号。
期待的结果是?
动作方法自定义路由如果不是以 / 开头,能否默认合并控制器路由,不想贴路由特性[Route("api/[controller]")],如下图所示:
为了减少不必要的沟通成本和时间成本,请再次确认 Issue
已按照要求正确填写,否则将被直接关闭。
[HttpMethod]
一旦提供了 Template
,那么就是自定义路由了,这和原生是一致的。[ApiDescriptionSettings(Name ="")]
方式指定控制器或者动作的名称[Route("list"), HttpGet]
的方式也行demo
,而不是截图片段让我抄代码,猜测代码,配置环境一堆没必要的时间浪费你的需求我测试看看,实现之后会不会导致和原生存在分歧或影响到历史项目升级。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
已实现,同时让这个动态API路由变得更强大,更变态了,比以往多了7种组合形式: https://gitee.com/dotnetchina/Furion/commit/679ff385bdac4088bed5a0466fa4a3c91996a132
下个版本发布。
using Furion.DynamicApiController;
using Microsoft.AspNetCore.Mvc;
namespace WebApplication38;
[Route("api/[controller]")]
[Route("api2/[controller]")]
public class Test1Service : IDynamicApiController
{
[HttpGet("test")]
[HttpPost]
[AcceptVerbs("PUT", "PATCH")]
public async Task GetTestName()
{
await Task.CompletedTask;
}
}
public class Test2Service : IDynamicApiController
{
[HttpGet("/root/test")]
[HttpGet("test")]
[HttpGet(Name = "other-test")]
[HttpGet("template-test", Name = "other-test")]
[HttpPost]
[AcceptVerbs("PUT", "PATCH")]
public async Task GetTestName()
{
await Task.CompletedTask;
}
}
[Route("api/[controller]")]
[Route("api2/[controller]/second")]
[Route("api3/[controller]/three")]
public class Test3Service : IDynamicApiController
{
[HttpGet]
[HttpGet("get/[action]")]
[HttpPost]
[HttpPost("post/cus-version")]
public string GetVersion()
{
return "1.0.0";
}
}
第二种模式是我要需要的
1、本以为只是个路由定义与合并的小问题,故没有提供demo 下次注意
2、在控制器没有贴[Route("api/[controller]")]时,[HttpMethod]和[Route]不会合并成完整路由(带路由前缀的)即使自定义路由不是以/开头
3、[ApiDescriptionSettings(Name ="")]这种是可行的 感谢
嗯嗯。我已经实现了你的需求,仔细分析是合理的,所以顺便重构了两年前的笨代码,现在支持多对多路由组合,嵌套组合,我等下发版,升级就行了。
Furion v4.8.5.7
版本已发布,已支持该需求。
这个需求跟我上次那个差不多,当时好像每太表达清楚
我出了个大问题哎,没有发现怎么解决
这是接口套接口 route接route啊
这个目的就是为了复用接口,不想每次都写,另外生成器生成的底层代码就会少很多。
本来动态 WebAPI 是让大家不用手动配置路由的,只需要通过配置调整即可。这倒好了,几乎全网都手动配置了,那还不如直接用控制器了。
我的工程里面写死路由名称是为了迎合应用层自定义接口风格,有人喜欢resful有人不喜欢,有人喜欢带动作前缀 有人不喜欢带等。底层接口固化死名称,就不随着外部应用设置而改变了。
@Lvgs @zuohuaijun 功能已支持,越来越变态了。。。
using Furion.DynamicApiController;
using Microsoft.AspNetCore.Mvc;
Serve.Run();
public class WithClass : IDynamicApiController
{
[Route("Add")]
public void Add()
{
}
[Route("Edit")]
public void Edit()
{
}
}
[Route("api/system/SystemDictionary")]
public class SystemService : WithClass
{
public void Some()
{
}
}
https://gitee.com/dotnetchina/Furion/commit/f7faa6a211881efe0319025f4791b4b1b8c0669b
先吃饭,等下发版~~
登录 后才可以发表评论