- 1. REST - small introduction
- 2. WCF Web Api - linkownia
- 3. WCF Web Api - szybki start
- 4. WCF Web Api - simple GET
Rest = zasób + reprezentacja.
Ostatnio stworzyłam zasób, ale nie było mowy o reprezentacji.
Kiedy próbowałam napisać coś restful w WCFie irytowało mnie że w pewnym momencie trzeba było podać JSON czy XML. Być może wtedy nie wnikałam wystarczająco głęboko ;)
W Web Api nic żeśmy nie określali a przeglądarka od razu potrafiła odczytać XML.
Posługując się Fiddlerem łatwo jest pokazać jak uzyskać XML albo JSONa.
XML (domyślnie):
Wynik:
JSON - wystarczy podać Accept: application/json aby dostać wyniki w formacie Json
I to jest to co dostajemy z pudełka - o ile nie mamy żadnych bardziej skomplikowanych danych jak choćby obrazków (to potem).Web Api udostępnia również klasę klienta rest: HttpClient
Najprostszy przypadek Xml:
HttpClient httpClient = new HttpClient();
HttpResponseMessage res = httpClient.Get("http://localhost/WebApiTests/api/contacts");
if (res.StatusCode == System.Net.HttpStatusCode.OK)
{
textBox1.Text += res.Content.ReadAsString();
//jakoś wole TextBoxy w WinFormsach niż aplikacje konsolowe
}
else
{
// w razie niepowodzenia wypisz tylko status
textBox1.Text += res.StatusCode.ToString();
}
Output:
<?xml version= "1.0 " encoding= "utf-8 "?>
<ArrayOfContact>
<Contact>
<ContactId> 1</ContactId>
<Name> Glenn Block</Name>
</Contact>
<Contact>
<ContactId> 2</ContactId>
<Name> Howard Dierking</Name>
</Contact>
</ArrayOfContact>
HttpClient httpClient = new HttpClient();
var request = new HttpRequestMessage()
{
Method = HttpMethod.Get,
RequestUri = new Uri("http://localhost/WebApiTests/api/contacts")
};
//Dodajemy dokładnie to samo co w Fiddlerze - "Accept"
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage responseJason = null;
responseJason = httpClient.Send(request, HttpCompletionOption.ResponseHeadersRead);
if (responseJason != null)
{
if (responseJason.StatusCode == System.Net.HttpStatusCode.OK)
{
textBox1.Text += responseJason.Content.ReadAsString();
}
else
{
textBox1.Text += responseJason.StatusCode.ToString();
}
}
/*Output:
[{"ContactId":1,"Name":"Glenn Block"},{"ContactId":2,"Name":"Howard Dierking"}]
*/
0 komentarze:
Prześlij komentarz