【问题标题】:Web API 2 - restful service - URL encodedWeb API 2 - RESTful 服务 - URL 编码
【发布时间】:2015-01-26 00:53:31
【问题描述】:

我使用 Web API 2 创建了一个 RESTful 服务。我有以下路线来返回有关库存商品的信息:

http://localhost/api/stockitems/{stockCode}

i.e. http://localhost/api/stockitems/BOMTEST1

我的系统中有包含正斜杠的股票代码,即 CA/BASE/SNG/BEECH。由于斜线,我自然无法使用标准约定请求详细信息。

http://localhost/api/stockitems/CA/BASE/SNG/BEECH

我尝试了 URL 编码,但它没有击中控制器

http://localhost/api/stockitems/CA%2FBASE%2FSNG%2FBEECH

我只是不断收到 404

如何在 Web API 中处理这个问题?

【问题讨论】:

    标签: c# rest asp.net-web-api


    【解决方案1】:

    您需要更改 WebApiConfig。如果您在此位置以外不使用 ID,则只需在配置的该部分添加通配符 ({*id}):

    config.Routes.MapHttpRoute(
        name: "Default",
        routeTemplate: "api/{controller}/{*id}",
        defaults: new { id = RouteParameter.Optional }
    );
    

    我建议为这种情况创建一个特定的路线(假设它是唯一需要允许斜杠的场景):

    config.Routes.MapHttpRoute(
        name: "StockItems",
        routeTemplate: "api/stockitems/{*id}",
        defaults: new { controller = "StockItems", id = RouteParameter.Optional }
    );
    

    您不需要以这种方式对 URL 进行 url 编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多