Web API 2 - 宁静的服务 - URL编码

时间:2014-11-27 12:08:14

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

我使用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

我尝试过网址编码,但它没有点击控制器

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

我只是继续得到404

如何在Web API中处理此问题?

1 个答案:

答案 0 :(得分:3)

您需要更改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 }
);

您不需要以这种方式对网址进行网址编码。