serviço RESTful WCF que pode responder tanto em JSON (P) e XML e ainda ser usado como serviço web SOAP?

StackOverflow https://stackoverflow.com/questions/607767

  •  03-07-2019
  •  | 
  •  

Pergunta

Dado um contrato, tais como:

[ServiceContract] public interface IService
{
    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}")]
    ResponseData GetData(string id, string format);
}

Existe uma maneira de obter o serviço de responder com JSON, quando solicitado como: /GetData/1234.json, xml, quando solicitado como /GetData/1234.xml e ainda estar disponível como um serviço de sabão adequada em algum outro url, com um contrato de wsdl fortemente tipado?

Usando um Stream como o valor de retorno para GetData não é viável, como se fufills os dois primeiros requisitos, o WCF não pode criar uma especificação WSDL completo como ele não tem idéia do que o conteúdo do fluxo resultante será.

Foi útil?

Solução

Você deve tem dois métodos distintos que levam id e formato (e eles chamariam uma implementação compartilhada que retorna ResponseData) que têm diferentes atributos WebGet :

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}.xml", 
        ResponseFormat=WebMessageFormat.Xml)]
    ResponseData GetDataXml(string id, string format);

    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}.json", 
        ResponseFormat=WebMessageFormat.Json)]
    ResponseData GetDataJson(string id, string format);
}

Para o ponto final SOAP, você deve ser capaz de chamar qualquer método, mas você vai ter que ter um separado ServiceHost instância que hospeda a execução do contrato.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top