2014-07-10 41 views
3

我想將Mailgun的webhooks實現到我的.Net Web API應用程序中,但是他們POST的一些參數在其中有一些參數。我該如何解決這個問題?他們張貼的內容變量名稱模型綁定器中的Web API短劃線

例子:

client-type=browser&city=San+Francisco&domain=telzio.com&device-type=desktop&my_var_1=Mailgun+Variable+%231&country=US&region=CA&client-name=Chrome&user-agent=Mozilla%2F5.0+%28X11%3B+Linux+x86_64%29+AppleWebKit%2F537.31+%28KHTML%2C+like+Gecko%29+Chrome%2F26.0.1410.43+Safari%2F537.31&client-os=Linux&my-var-2=awesome&ip=50.56.129.169&recipient=alice%40example.com&event=opened&timestamp=1405017113&token=6khi46bvupa1358v0b3iy29kwumpbajb3ioz4illb6v9bbqkp6&signature=88f46b9ba63ff475bbb3ab193696cf45bf2f25e7e62b44f1e492ff4e085730dd 

我的模型:

public class MailgunModel 
{ 
    public string City { get; set; } 
    public string Domain { get; set; } 
    public string Country { get; set; } 
    public string Region { get; set; } 
    public string Ip { get; set; } 
    public string Recipient { get; set; } 
    public string Event { get; set; } 
    public long Timestamp { get; set; } 
    public string Token { get; set; } 
    public string Signature { get; set; } 

    public string ClientType get; set; } 
    public string DeviceType { get; set; } 
    public string ClientName { get; set; } 
    public string UserAgent { get; set; } 
    public string ClientOs { get; set; } 
} 
+0

您可以創建行爲過濾器屬性來處理破折號: http://stackoverflow.com/questions/3461365/using-a-dash-in-asp-mvc-parameters –

+0

actionresult在Web API中不起作用? – PeteFox

+0

這與您的方法返回的內容有關嗎? ASAIK可以在Web Api中使用ActionFilterAttribute。您仍然可以將這些屬性添加到您的API操作中。你可以發佈你的ApiController代碼。 –

回答

3

一個最簡單的方法是接收FormDataCollection和訪問所需的變量。這是跛腳,因爲你必須手動映射每個屬性,但它適用於簡單的場景。

public IHttpActionResult AppointmentMessage(FormDataCollection data) 
{ 
    if (data != null) 
    { 
     var msg = new MailGunMessage(); 
     msg.From = data["from"]; 
     msg.To = data["to"]; 
     msg.Subject = data["subject"]; 
     msg.BodyHtml = data["body-html"]; 
     msg.BodyPlain = data["body-pain"]; 
     // ... and so on 
    } 
    return this.Ok(); 
} 

的其他選擇是使用自定義的模型綁定在你的模型像這裏描述:https://stackoverflow.com/a/4316327/1720615