pátek 16. března 2012
čtvrtek 8. března 2012
WCF - RESTFULL - service - webová služba
Do našeho serveru budeme přidávat dolaší WCF službu. Tentokráte se bude jednat o služby přístupnou přes HTTP protokol. Jedná se o klasickou webovou službu.
Podívejme se na příklad:
Vytvoříme si nový ServiceContract.
Způsob volání přes protokol HTTP se konfiguruje pomocí atributu WebGet. Bude se jednat o volání přes HTTP příkaz GET. Kdybychom chtěli využít jiných HTTP příkazů, můžeme využít atributu WebInvoke pro jejich konfiguraci.
Podívejme zpět se na první příklad, kde funkce GetEventInfo vrací třídu EventInfo. Zajisté vás zajímá, v jakém formátu se vrátí odpověď od serveru. Formát si můžete přepnout buď přepínačem ResponseFormat = WebMessageFormat.Xml nebo přepínačem ResponseFormat = WebMessageFormat.Json. Zaměřme se na XML formát.
Mám jednoduchou třídu:
Server mi vrátí XML a názvy tagů jsou totožné z názvy tříd. Server vrátí výsledné XML jako:
To je dobré, ale často mohu potřebovat pojmenovat tagy nějakým vlastním jménem. Jakým způsobem mohu ovlivnit názvy tagů?
Pokud do atributu DataContract přidáte parametr Name, dostane tag ve výstupním XML toto jméno. To samé se stane, když přidáte parametr Name do atributu DataMember.Ze serveru se mi vrátí XML:
To je vše přátelé.
Podívejme se na příklad:
Vytvoříme si nový ServiceContract.
[ServiceContract] public interface IEventService { [OperationContract] [WebGet(UriTemplate = "EventInfo/{exe_name}", ResponseFormat = WebMessageFormat.Xml)] EventInfo GetEventInfo(string exe_name); }
[OperationContract] [WebInvoke(Method = "PUT", UriTemplate = "/customer/{id}")] public void PutCustomer(int id, Customer customer) { } [OperationContract] [WebInvoke(Method = "DELETE", UriTemplate = "/customer/{id}")] public void DeleteCustomer(int id) { }
[DataContract] public class EventInfo { [DataMember] public string Name { get; set; } }
<EventInfo> <Name>AKCE</Name> </EventInfo>
[DataContract(Name="MyEventInfo")] public class EventInfo { [DataMember(Name="Jmeno")] public string Name { get; set; } }
Pokud do atributu DataContract přidáte parametr Name, dostane tag ve výstupním XML toto jméno. To samé se stane, když přidáte parametr Name do atributu DataMember.Ze serveru se mi vrátí XML:
<MyEventInfo xmlns="http://schemas.datacontract.org/2004/07/WCF8bcPgServices" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <Jmeno>AKCE</Jmeno> </MyEventInfo>
Přihlásit se k odběru:
Příspěvky (Atom)