我的任务是编写一个服务,接受来自JIRA发送的Atlassian Webhook的HTTP POST数据。我想在4.0 .NET框架中使用WebAPI来使用该服务,我想知道如何做到这一点。我发现这个资源揭示了POST数据的格式:JIRA Webhooks Overview。
我认为我可以编写一个WebAPI“Post”方法,将输入接受为Dictionary<string, object>
,但我希望映射到定义良好的对象而不是goo字典。
我看到有一个名为Atlassian.SDK的NuGet包,它包含“用于与Atlassian JIRA交互的实用程序”。但是,看起来API似乎更倾向于阅读JIRA票据,创建和更新它们。
Atlassian.SDK NuGet包是否允许以强类型方式使用Webhook发送的HTTP POST,而不是使用.NET Dictionary解析JSON数据?
答案 0 :(得分:3)
AFAIK Atlassian.SDK不支持Webhook场景。它正如您所写的那样,通过Linq到Jira扩展和类支持REST API调用(查询和更新问题)。
但是,我不认为您应该使用.NET Dictionary手动解析JSON。我已经做了一些非常简单的步骤来在ApiController中生成强类型的webhook结果。
我在Requestb.in(http://requestb.in/1g9lg8y1
)
我使用Web API创建了一个新的ASP.NET MVC应用程序,当我在浏览器中启动它时,可以在http://localhost:18177/
上访问
我在Jira中设置了两个指向这些地址的webhook
我在Jira中创建了一个新问题,在Requestb.in页面中,我将整个JSON内容复制到raw body部分的剪贴板中。
重点在于:我从这个JSON内容创建了自定义类。 (您可以使用任何您想要的工具执行此操作,例如JSON2Sharp),我个人使用Visual Studio的Web Essentials扩展来完成此操作。 (Edit -> Paste special -> Paste JSON as Classes
)
我将根重命名为JiraWebhookObject
,并将ValuesController的Post方法的签名修改为
public void Post([FromBody]JiraWebhookObject value)
最后我修改了问题的摘要。由于更新了webhook,我在Web API Controller中获得了强类型结果。