WCF 4.0 REST Samples (German)

Damir Dobric Posts

Next talks:

 

    

Follow me on Twitter: #ddobric



 

 

Archives

Die meisten REST Features von WCF konnte man bisher ausschließlich im WCF Starter Kit finden. Ab .NET 4.0 sind diese überwiegend zum festen Bestandteil von WCF 4.0 geworden. Um ein REST Service zu erstellen am einfachsten ist es im Visual Studio 2010 WCF Rest Template zu verwenden, das über Code Gallery sehr einfach und schnell installierbar ist.

Ein REST-Service Projekt benötigt eine Global.Asax Datei aus ASP.NET, damit die RoutingTable für Service angelegt werden kann:
RouteTable.Routes.Add(new ServiceRoute("Service1", new WebServiceHostFactory(), typeof(Service1)));

Die Registrierung oben definiert eine Route fuer Service1 mit gegebener HostFactory. Damit kann folgende Operation  

 

[WebGet(UriTemplate = "")]
public List<MyResource> GetCollection()


über folgendes URI erreicht werden: http://host/service1

Wenn eine Operation Eingabeparameter hat kann sie wie folgt definiert werden:

[WebGet(UriTemplate = "{id}")]
public MyResource Get(string id)


Fuer id=123, wuerde man folgende URI wenden:

http://host/service1/1231

Etwas komplexer ist folgendes Beispiel mit zwei Argumenten:

[WebGet(UriTemplate = "gettime/{zone}/{format}")]
public DateTime GetTime(string zone, string format)


Die URI für diese Operation lautet:
http://host/service1/gettime/berlin/YYYYMMDD

Mit verschiedenen URI-Templates kann man die Service Abfragen beliebig stylen. Am einfachsten ist es eine URI zu verwenden, die verschiedene HTTP-Methoden einsetzt. Zum Beispiel um die Ressource zu erzeugen definiert man Operaqtion Create.

[WebInvoke(UriTemplate = "", Method = "POST")]
public MyResource CreateResource(MyResource instance)

 

Diese Operation wäre über URI http://host/service1 erreichbar. Allerdings HTTP Body müsste MyResource enthalten. Im JSON würde dies wie folgt aussehen:
{"Id":2147483647,"StringValue":"String content"}

Somit ist es möglich auch weiter HTTP Methoden wie PUT (für UpdateResource) oder DELETE (für DeleteResource) anzuwenden.

Last, but not least WCF 4.0 REST bietet eine automatisch generierte Help-Page an. Diese ist unter folgender URI zu finden: http://host/service1/help
Damit haben auch die REST-basierte Dienste eine mehr oder weniger ausführliche Beschreibung.

Cheers

 


Posted May 16 2010, 08:49 PM by Damir Dobric

Comments

Hussein wrote re: WCF 4.0 REST Samples (German)
on 12-05-2013 21:07

I had some problems with desarializetion (due to namespaces in xml).after adding Contract to SampleItem:    [DataContract(Namespace = "", IsReference = false)]    public class SampleItem    {        [DataMember]        public int Id { get; set; } one can simply deserialize:            string xmlString2 = client.DownloadString( SampleService?id=1 );            XElement xml2 = XElement.Parse(xmlString2);            XmlSerializer xs = new XmlSerializer(typeof(SampleItem));            SampleItem obj = (SampleItem)xs.Deserialize(new StringReader(xmlString2));            Console.WriteLine( a: {0} {1} , obj.Id, obj.StringValue)

developers.de is a .Net Community Blog powered by daenet GmbH.