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 服务 + 基本身份验证

wcf RESTful服务和WEB API的区别

java小技能:Swagger (RESTful 风格的 Web 服务框架)

基于gin web框架搭建RESTful API服务