Comment transmettre la liste des types complexes dans la chaîne de requête?

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

  •  12-11-2019
  •  | 
  •  

Question

Comment passeriez-vous une liste de types complexes dans Servicestack?Par exemple, ma demande DTO ressemble à ceci:

//Request DTO
public class Test
{
    public IList<Fund> Funds { get; set; }
}

public class Fund
{
    public string Key { get; set; }
    public int Percent { get; set; }
}

Comment puis-je passer l'objet sérialisé via HTTP GET?

http://localhost:49490/api/funds={ ?? }

KeyValueDatacontractDesérializer: Erreur lors de la conversion de l'erreur en Type: Type Les définitions doivent commencer par un "{", en attendant de type "Fonds" de type Serialized, à partir de: asdf

Était-ce utile?

La solution

ServiceStack analyse le querystring à l'aide de JSV Format C'est essentiellement JSON avec le style CSVCitations (c'est-à-dire uniquement des devis lorsque votre valeur a un caractère d'évacuation).

Bien que vous n'aviez pas défini une route personnalisée ici, dans la plupart des cas, votre itinéraire personnalisé est identique à votre demande DTO qui, dans ce cas, est Test pas / Fonds .

Assumer ainsi un itinéraire personnalisé ressemble à:

Routes.Add<Test>("/test");

Vous pouvez appeler votre service via une querystring comme:

http:// localhost: 49490 / API / test? Fonds= [{Key: Key1, pourcentage: 1}, {Key: Key2, pourcentage: 2}]

sur une note latérale Les interfaces sur les DTO sont généralement une mauvaise idée, vous devriez envisager d'éviter (au moins limiter) son utilisation à tout moment.

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