Web API 2 - RESTful 服务 - URL 编码
Posted
技术标签:
【中文标题】Web API 2 - RESTful 服务 - URL 编码【英文标题】:Web API 2 - restful service - URL encoded 【发布时间】: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 中处理这个问题?
【问题讨论】:
【参考方案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 编码。
【讨论】:
以上是关于Web API 2 - RESTful 服务 - URL 编码的主要内容,如果未能解决你的问题,请参考以下文章
RESTful Web 服务 + Spring Security:带有访问令牌的 API 服务?
Rest API 和 Restful Web 服务之间的区别
ASP.net Web API RESTful Web 服务 + 基本身份验证