用ASP.NET WebAPI消费Atlassian Webhook?

时间:2014-08-11 15:40:06

标签: asp.net-web-api jira webhooks

我的任务是编写一个服务,接受来自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数据?

1 个答案:

答案 0 :(得分:3)

AFAIK Atlassian.SDK不支持Webhook场景。它正如您所写的那样,通过Linq到Jira扩展和类支持REST API调用(查询和更新问题)。

但是,我不认为您应该使用.NET Dictionary手动解析JSON。我已经做了一些非常简单的步骤来在ApiController中生成强类型的webhook结果。

  1. 我在Requestb.inhttp://requestb.in/1g9lg8y1

  2. 中设置了一个临时请求容器
  3. 我使用Web API创建了一个新的ASP.NET MVC应用程序,当我在浏览器中启动它时,可以在http://localhost:18177/上访问

  4. 我在Jira中设置了两个指向这些地址的webhook Webhooks in Jira

  5. 我在Jira中创建了一个新问题,在Requestb.in页面中,我将整个JSON内容复制到raw body部分的剪贴板中。

  6. 重点在于:我从这个JSON内容创建了自定义类。 (您可以使用任何您想要的工具执行此操作,例如JSON2Sharp),我个人使用Visual Studio的Web Essentials扩展来完成此操作。 (Edit -> Paste special -> Paste JSON as Classes

  7. 我将根重命名为JiraWebhookObject,并将ValuesController的Post方法的签名修改为

    public void Post([FromBody]JiraWebhookObject value)
    
  8. 最后我修改了问题的摘要。由于更新了webhook,我在Web API Controller中获得了强类型结果。 Strongly-typed webhook