2016-04-03 33 views
0

我asp.net網絡API是一個獨立的應用程序,面對的問題通過JSON SA一個parameter.My API方法是波紋管如何JSON參數通在asp.net網頁API動作方法

[Route("api/UniqueUser/{userInfo}")] 
     public HttpResponseMessage GetUniqueUserByEmail(string userInfo) 
{ 
} 

在上述參數USERINFO就像波紋管

{"UserInfo":[{"Id":1,"UserName":"Jxj Bdn","Email":"[email protected]"}]} 

當我把這個在我的瀏覽器的網址告訴我怒吼錯誤josn

enter image description here

回答

1

JSON數據應該放在請求的主體中進行反序列化,而不是在查詢字符串/瀏覽器URL中。

此外,'字符串userInfo'將無法按預期工作。您可以定義一個代表JSON對象參數的類,它將正常工作。

這樣的工作,例如:

public class UserInfo 
{ 
    public int Id { get; set;} 

    public string UserName { get; set;} 

    public string Email { get; set;} 
} 

和改變這一行:

public HttpResponseMessage GetUniqueUserByEmail(UserInfo userInfo) 

編輯:

如果它是一個網址,有人需要傳遞在你使用的路由:

https://site/api/UniqueUser/1/Jxj Bdn/[email protected] 

和在你的控制器:

[Route("api/UniqueUser/{id}/{userName}/{email}")] 
public HttpResponseMessage GetUniqueUserByEmail(int id, string userName, string email) 

看看這裏,看看如何用傳統的查詢字符串參數就此別過:

http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

我會強烈建議使用第一種方法,雖然,它爲您提供強類型對象,並且在細節更改時更容易處理,並且您可以從模型驗證中獲得構建的好處。

你不能爲你的客戶製作一個簡單的HTML表單嗎?

+0

正如我所說這是一個服務應用程序,所以我需要給用戶只是一個網址沒有別的,在這種情況下我做了什麼。 – shamim

+0

我會更新我的答案 –