【问题标题】:web api optional parameter before extension扩展前的 web api 可选参数
【发布时间】:2016-04-28 07:02:54
【问题描述】:

我正在使用 web api 1 mvc 4

我有以下代码

public void save(int id , string name, string code = "")
{

}

我在 webapi.config 中有以下映射。

config.Routes.MapHttpRoute(
                 name: "saveproduct",
                 routeTemplate: "api/product/save/{id}/{name}/{code}.{ext}",
                 defaults: new
                 {
                     controller = "product",
                     code = RouteParameter.Optional,
                     action = "save"
                 });

现在如果我打电话

localhost://api/product/save/1/book/p23.json

有效

但是

localhost://api/product/save/1/book/.json

没有用

我找到的原因是因为可选参数“code”介于两者之间。

我怎样才能让它工作..因为我需要扩展必须在最后加上可选参数,如“code”。

我找到了 url ,但找不到任何相关信息。

谢谢

【问题讨论】:

    标签: c# asp.net-mvc-4 asp.net-web-api routing


    【解决方案1】:

    简短:你不能。

    Long:你不能在路由中间有一个可选参数,因为系统无法理解“.json”是否是你的 {code} 的值{ext} 参数的值。

    如果您想使用这种方法,您需要始终强制 code 参数。

    顺便说一句,像 localhost://api/product/save/1/book/.json 这样的路由没有意义...... .json 它就像一个“文件”扩展名,但是有这里没有文件名。你不应该允许这种调用。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      • 2018-03-27
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多