2016-02-22 2 views
0

Je reçois les données exemple suivant sont revenus d'un rappel MailChimp:Parsing chaîne de requête imbriquée de URI dans WebAPI

type: subscribe 
data[id]: 5h3872nb33 
data[merges][REFERRAL]: 83HJS 

Il est codé dans l'URI, comme:

?type=subscribe&data%5Bid%5D=65761e38d6&data%5Bmerges%5D%5BREFERRAL%5D=3TVPQ 

ou

?type=subscribe&data[id]=65761e38d6&data[merges][REFERRAL]=3TVPQ 

Mon contrôleur est la suivante

public bool Get([FromUri]CallbackModel model) 
{ 
    // Process request 
} 

Avec le modèle:

public class CallbackModel 
{ 
    public string Type { get; set; } 

    public CallbackData Data { get; set; } 
} 

public class CallbackDataModel 
{ 
    public string Id { get; set; } 
} 

J'ai omis diverses tentatives que j'ai fait pour obtenir le data[merges][REFERRAL] d'une manière agréable, mais je commence à croire qu'il ne sera pas possible.

J'essaie d'éviter la route Request.GetQueryNameValuePairs() mais je suis prêt si c'est la seule option viable.

Idéalement, les champs de fusion être une propriété de Data:

var referral = model.Data.Merges.Referral; 

quelqu'un Hope peut aider, Merci.

+0

Etes-vous sûr de vouloir un HTTP GET? –

+0

Je suis sûr que non, mais c'est comme ça que MailChimp fait ses webhooks ;-) –

Répondre

1

Il suffit de faire cela -

public class CallbackData 
{ 
    public string Id { get; set; } 
    public A Merges { get; set; } 
} 


public class A 
{ 
    public string REFERRAL { get; set; } 
} 

travaillant pour moi, maintenant.

+0

Quand vous pensez que vous avez tout essayé ... Merci beaucoup. –