如何确定我是否使用Restful服务?

时间:2015-10-01 10:42:27

标签: c# web-services wcf rest

我需要为我的应用程序创建Restful服务。更多我深入研究这一点我感到困惑。据我所知,Restful服务使用http进行 CRUD 操作,这使得它更快更轻。但我不确定如何确定Web服务是否为Restful。

但是我在网上找到了一些声称是Restful服务但有一些 Custombinding 类型的帮助。以下是web.config的外观

 <system.serviceModel>
    <services>
      <service behaviorConfiguration="" name="RestRaw.Service1">
        <endpoint address="" behaviorConfiguration="web" contract="RestRaw.IService1" binding="customBinding" bindingConfiguration="RawReceiveCapable"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <bindings>
      <customBinding>
        <binding name="RawReceiveCapable">
          <webMessageEncoding webContentTypeMapperType="RestRaw.RawContentTypeMapper, RestRaw, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <httpTransport manualAddressing="true" maxReceivedMessageSize="524288000"
           transferMode="Streamed" />
        </binding>

      </customBinding>
    </bindings>
  </system.serviceModel>

这是 Restful service 。如果是的话怎么能确定?

目前我很困惑任何澄清我怀疑的建议都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

在这种特殊情况下,您可以通过添加的行为告诉它是一种REST风格的Web服务。

  <endpointBehaviors>
    <behavior name="web">
      <webHttp/>
    </behavior>
  </endpointBehaviors>

webHttp行为修改了操作调度管道,而不是从SOAP主体读取目标操作,它使用服务接口属性来决定将其路由到何处。 Here is a good page on msdn显示了在WCF中创建REST样式Web服务的基础知识。以下示例来自该页面。

[ServiceContract]
interface ICustomer
{
  //"View It" -> HTTP GET
    [WebGet( UriTemplate="customers/{id}" )]
  Customer GetCustomer( string id ):

  //"Do It“ -> HTTP PUT
  [WebInvoke( UriTemplate="customers/{id}", Method="PUT" )]
  Customer UpdateCustomer( string id, Customer newCustomer );
}

WebGet属性与GET谓词匹配,然后请求URI模式匹配以决定调用哪个方法。然后可以提取部分URI并将其转换为参数并传递给方法调用。在第二种方法UpdateCustomer中,Customer参数来自请求正文,因为它是唯一不能在其他地方匹配的参数。为了像这样使用请求体,webMessageEncoding绑定元素用于自定义绑定。如果您只是使用WebHttpBinding,它会为您完成所有这些操作。您提供的配置是以明确的方式进行的。

答案 1 :(得分:1)

web.config文件显示了典型的WCF应用程序。要检查它是否为RESTful,您可能会学习与WCF REST相关的主题,例如

https://msdn.microsoft.com/en-us/library/dd203052.aspx