有没有办法将Operation限制为仅供REST使用者使用,而不能限制为SOAP使用者?
例如:
[OperationContract]
List<Response> GetResponses(int orderID);
[OperationContract]
[WebGet(UriTemplate = "{orderID}/responses",
ResponseFormat = WebMessageFormat.Json)]
List<Response> GetResponses(string orderID);
虽然REST使用者只能处理第二种方法,但SOAP使用者会看到这两种方法,但无论如何都应该使用第一种方法。所以我想只向SOAP消费者展示第一种方法,而仅向REST消费者展示第二种方法。我可以在不创建新服务的情况下实现目标吗?
答案 0 :(得分:1)
您可以做的是分离合同,一个用于暴露SOAP,另一个用于暴露REST,然后使您的服务实现两者:
SOAP合约
[ServiceContract]
public interface IDummySoap
{
[OperationContract]
List<Response> GetResponses(int orderID);
}
REST合同
[ServiceContract]
public interface IDummyRest
{
[OperationContract]
[WebGet(UriTemplate = "{orderID}/responses",
ResponseFormat = WebMessageFormat.Json)]
List<Response> GetResponses(string orderID);
}
服务实施
public class DummyService : IDummySoap, IDummyRest
{
public List<Response> GetResponses(int orderID)
{
// Implementation
}
public List<Response> GetResponses(string orderID)
{
// Implementation
}
}
那些想要通过SOAP调用您的服务的人将使用SOAP合同,而其他人则使用REST合同。