0

我想使用的WebAPI暴露分級鍵值數據結構是這樣的:無界分層路由

http://www.whatever.com/api/root/level1/level2/leveln 

這是可能的的WebAPI?如果是這樣,怎麼樣?

+0

是可能的:) –

+0

謝謝,非常有幫助:D(問題編輯) – ConditionRacer

回答

1

的WebAPI可以公開幾乎任何URI你喜歡的 - 它歸結爲如何配置路由,以及你如何解釋方法的參數,一旦他們已經從URL中提取。

要映射一個無界層次路由,我會將/api/root/之後的所有內容映射到一個變量,然後在控制器的自定義邏輯或專用服務中明確地解析和解釋該方法。

訣竅到具有匹配包括斜線是在開始添加*

config.Routes.MapHttpRoute(
    name: "KeyValueHierarchy", 
    routeTemplate: "api/test/root/{*keyLevels}", 
    defaults: new { controller = "Hierarchy" } 
); 

在控制器然後

public class HierarchyController : ApiController 
{ 

    public IHttpActionResult Get(string keyLevels) 
    { 
     var keys = keyLevels.Split('/'); 

     // ... do stuff with your keys 

     return Ok(keys); 
    } 

} 

快速測試:

GET /api/test/root/foo/5/bar/10/foobar

返回:

<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
    <string>foo</string> 
    <string>5</string> 
    <string>bar</string> 
    <string>10</string> 
    <string>foobar</string> 
</ArrayOfstring>