REST в WCF не так уж сложен, как только вы это выясните.
Сначала вы должны определить свой интерфейс.
Вот пример.
[ServiceContract]
public interface IRESTExample
{
[WebGet(UriTemplate = "interaction/queue?s={site}", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
string QueueInteraction(string site);
[WebGet(UriTemplate = "interaction/cancel?id={interactionId}", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
string CancelInteraction(string interactionId);
[WebGet(UriTemplate = "queue/state?s={site}&q={queue}", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
string QueueState(string site, string queue);
}
Вы можете увидеть в WebGet, что вы определяете окончательный URL. Так что это зависит от того, где вы его связываете, но, скажем, вы связываете конечную точку с www.example.com/rest
.
QueueInteraciton будет www.example.com/rest/interaction/queue?s=SomeSite
Где {stie} или {имя_параметра} заменяется именем параметра.
Реализация - это простой класс, я предполагаю, что вы знаете, как реализовать интерфейс. Если вам нужна помощь, просто оставьте комментарий.
Теперь привязываем конечную точку. В конце концов это не так сложно, вы можете сделать все это в конфигурации.
<system.serviceModel>
<services>
<service name="Stackoverflow.Example.Service.RestExample" behaviorConfiguration="MyServiceTypeBehaviors">
<host>
<baseAddresses>
<add baseAddress="http://localhost:2136/RestExample"/>
</baseAddresses>
</host>
<endpoint address="rest" binding="webHttpBinding" behaviorConfiguration="xmlBehavior" contract="Stackoverflow.Example.Service.IRESTExample" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors" >
<!-- Add the following element to your service behavior configuration. -->
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<webHttp/>
</behavior>
<behavior name="xmlBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name = "NoSecurity">
<security mode = "None" />
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
Теперь код для запуска сервиса и его привязки. Вы можете сделать это во всем, например, в консольном приложении.
RestExample exampleService = new RestExample();
host = new ServiceHost(exampleService);
host.Open();
Этого должно быть достаточно, чтобы начать.