c# - 在 web api 端点中将 url 路径作为参数传递
问题描述
我有这个控制器,它有一种接收两个变量的方法。一是文化,二是道路。
public class WebsiteContentController : ApiController
{
[HttpGet]
public HttpResponseMessage Test(string culture, string path)
{
var result = DoStuff(culture, path);
return result;
}
}
我在这个例子中称之为:
/Api/WebsiteContent/Test?path=/quem-somos/a-marca/&culture=pt
/Api/WebsiteContent/Test?path=/quem-somos/&culture=pt
/Api/WebsiteContent/Test?path=/quem-somos/something/something/&culture=pt
我喜欢做的是创建一个与此类似的端点:
/Api/WebsiteContent/Test/pt/quem-somos/a-marca/
有没有办法用这种格式调用端点?
解决方案
只有这样的路由才能用于 url ".../Api/WebsiteContent/Test/pt/quem-somos/a-marca"
[HttpGet("{culture/path1/path2}")]
public HttpResponseMessage Test(string culture, string path1, string path2)
{
var path="/"+ path1+"/"+path2+"/";
}
或者也许像这样的灵活路径
[HttpGet("{culture/path1?/path2?/path3?/patch4?}")]
public HttpResponseMessage Test(string culture, string path1, string path2
string path3, string path4)
如果您使用旧的网络版本,请将 MapMvcAttributeRoutes 添加到 RegisterRoutes
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: “Default”,
url: “api/{controller}/{action}/{id}”,
defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }
);
}
推荐阅读
- sql - SQL 按多个非唯一事件分组
- css - Angular 7:添加注释并从图像上的选定点获取 x、y 坐标
- angular - Angular:从父级成功调用后数据未传递给子组件
- android - Firebase 云功能被触发两次。第一次'错误',第二次'ok'
- python-3.x - 如何找到某个数字的因子并且只在一行中显示输出
- asp.net-mvc - 在事件中使用 jquery 打开 Telerik 编辑器表向导
- python-3.x - AttributeError:模块'flask.app'没有属性'route'
- c - 串口 IAR 上的 Sprintf 和浮点值
- python - 正则表达式:匹配带有侵入符号的单词
- sql - Azure SQL 数据迁移助手 (DMA) 错误 - 三个或四个部分名称