2014-02-22 42 views
3

我使用小提琴手來測試我的要求..如何傳遞MULT參數網頁API

以下reuest我習慣叫我的網絡API方法..它工作正常。

http://localhost:50079/Import/Test/abc 

Type :Get 

web api method: 

     [ActionName("Test")] 
     public bool getconnection(string id) 
     { 
      return true; 
     } 

如果我通過多參數我得到錯誤:HTTP/1.1 404未找到

我用這樣的:

http://localhost:50079/Import/Test/abc/cde 

Type :Get 

web api method: 

      [ActionName("Test")] 
      public bool getconnection(string id,string value) 
      { 
       return true; 
      } 

我不希望使用任何途徑。 ..讓我知道爲什麼如果我通過多個參數爲什麼它不被識別..

+0

POST和GET請求的一般解決方案我已經回答[此問題](http://stackoverflow.com/a/372​​98083/5714537)。 –

回答

4

你必須指定一個匹配的路線

config.Routes.MapHttpRoute(
    name: "TestRoute", 
    routeTemplate: "api/{controller}/{id}/{value}", 
    defaults: new { id = RouteParameter.Optional, value = RouteParameter.Optional } 
); 

嘗試上述

1

TGH's answer是更好的解決方案。

但是,如果您不想使用任何路由,則必須將其他參數作爲查詢字符串參數傳遞,因爲路由引擎不知道映射到哪些變量的值(除了參數id在默認路由中配置)。

基於網絡API約定,如果你有一個這樣的控制器:

public class ImportController : ApiController 
{ 
    [ActionName("Test")] 
    public bool GetConnection(string id, string value) 
    { 
     return true; 
    } 
} 

相應的URI將是:

http://localhost:50079/api/Import/abc?value=cde 

如果要映射使用[ActionName]屬性,您需要將API配置爲按操作名稱進行路由。見this tutorial

+0

我已經通過http:// localhost:50079/Import/Test/abc?value = cde來自Fiddler ....它給錯誤.HTTP/1.1 404 Not Found – Kavitha

+0

@Kavitha看到我更新的答案。 – HTX9

2

你把方法上的HttpGet屬性,像這樣?

//http://localhost:50079/api/Import/abc?value=cde 
[HttpGet] 
[ActionName("Test")] 
public bool getconnection(string id,string value) 
{ 
    return true; 
} 
+0

謝謝tot!添加[HttpGet]屬性現在工作正常... – Kavitha

+0

總而言之,如果我的參數有空間b/w這個詞,我該如何傳遞值。例如:商業視線(在URL中) – Kavitha

+0

您需要用以下代碼替換「%20」的空格字符:http:// localhost:50079/api/Import/abc?value = Biz%20sight – TotPeRo

0

[FromBody]一個參數和[FromUri]一個參數。 例如:

public bool InserOrUpdate([FromBody] User user,[FromUri] IsNew) 

[FromBody] => AJAX數據 [FromUri] =>查詢字符串數據

但是該解決方案是在this connection