我使用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中处理此问题?
答案 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 }
);
您不需要以这种方式对网址进行网址编码。