Service RESTful WCF pouvant répondre à la fois en JSON (P) et en XML tout en restant utilisé comme service Web SOAP?

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

  •  03-07-2019
  •  | 
  •  

Question

Compte tenu d'un contrat tel que:

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

Existe-t-il un moyen de faire en sorte que le service réponde avec json à la demande: /GetData/1234.json, xml lorsque demandé sous la forme /GetData/1234.xml et toujours disponible en tant que service soap approprié dans une autre url, avec un contrat WSDL fortement typé?

L'utilisation d'un flux en tant que valeur de retour pour GetData n'est pas réalisable, car si elle remplit les deux premières exigences, wcf ne peut pas créer de spécification wsdl complète car il n'a aucune idée du contenu du flux résultant.

Était-ce utile?

La solution

Vous devriez disposer de deux méthodes distinctes qui prennent l'identifiant et le format (et appellent une implémentation partagée renvoyant ResponseData ) qui ont des attributs 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);
}

Pour le point de terminaison SOAP, vous devriez pouvoir appeler l'une ou l'autre méthode, mais vous devrez disposer d'un ServiceHost hébergeant la mise en œuvre du contrat.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top