2016-01-08 53 views

回答

-1

您不需要像傳統Web服務那樣創建代理類,而是可以使用Web Api的端點/ Url直接訪問Web API(如您在WebApiConfig.cs類中配置它的路由) 要訪問這些端點,您可以使用HttpClient對象,您不需要在您的客戶端應用程序中配置

1

您不需要在您的WPF客戶端中創建代理以與您的WEB API進行通信。在最簡單的情況下,只需使用一個HTTP客戶端調用您的Web API端點:

像這樣的事:

using (var client = new HttpClient()) 
{ 
    //Api Base address 
    client.BaseAddress = new Uri("http://localhost:9000/"); 

    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    //Sending a GET request to endpoint api/products/1 
    HttpResponseMessage response = await client.GetAsync("api/person/1"); 
    if (response.IsSuccessStatusCode) 
    { 
     //Getting the result and mapping to a Product object 
     Person person = await response.Content.ReadAsAsync<Person>(); 
    } 
} 
+0

沒有從服務器端的元數據。你的例子中的「人」來自哪裏?我想要元數據,所以我可以定義我的類型serverside。否則,在服務器端更改時,必須在所有客戶端上維護「人員」。我更喜歡自動生成的類型。 – jenspo

+0

那麼這是一個缺點。我不知道你怎麼能這樣做。考慮一下公共API。我從來沒有看到REST API以任何方式暴露它的實體。你正在尋找的是一份暴露你的DTO的文檔,這樣你的客戶就知道該期待什麼。另一種方法是在暴露API使用的類的地方構建一個SDK。無論哪種方式,你最終都會有重複。 – jpgrassi

+0

如果你有興趣看到一個使用REST(kinda)的例子,請看看https://github.com/faniereynders/WebApiProxy。它不適用於新的ASP.NET 5 WebAPI - 但是! 這是場外重複。但由於客戶端「克隆」是從服務器端元數據自動生成的,因此不存在維護。 – jenspo

相關問題