将Atlassian Webhook与ASP.NET WebAPI一起使用?

And*_*ndy 5 jira webhooks asp.net-web-api

我的任务是编写一个服务,该服务将从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数据?

luv*_*tor 5

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

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

  1. 我在Requestb.in(http://requestb.in/1g9lg8y1)中设置了一个临时请求容器

  2. 我使用 Web API 创建了一个新的 ASP.NET MVC 应用程序,当我在浏览器中启动它时,可以在http://localhost:18177/

  3. 我在 Jira 中设置了 2 个 webhooks 指向这些地址 Jira 中的 Webhook

  4. 我在 Jira 中创建了一个新问题,并在 Requestb.in 页面中将整个 JSON 内容复制到原始正文部分中的剪贴板中。

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

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

    public void Post([FromBody]JiraWebhookObject value)
    
    Run Code Online (Sandbox Code Playgroud)
  7. 最后我修改了问题的摘要。由于更新了 Webhook,我在 Web API 控制器中获得了强类型结果。 强类型 Webhook