2014-08-11 2 views
3

저는 JIRA에서 보낸 Atlassian Webhook의 HTTP POST 데이터를 받아들이는 서비스를 작성해야합니다. 4.0 .NET Framework에서 WebAPI를 사용하여 서비스를 사용하고 싶습니다. 어떻게하는지 궁금합니다. POST 데이터의 형식을 밝혀내는이 리소스를 찾았습니다 : JIRA Webhooks Overview.ASP.NET WebAPI에서 Atlassian Webhook을 사용하십니까?

나는 입력을 Dictionary<string, object>으로 받아 들일 수있는 WebAPI "Post"메서드를 작성할 수 있다고 생각하지만, Goo Dictionary 대신 잘 정의 된 개체에 매핑하려고합니다.

Atlassian.SDK라는 NuGet 패키지에는 "Atlassian JIRA와 상호 작용하는 유틸리티가 포함되어 있습니다"라는 메시지가 있습니다. 그러나 API는 JIRA 티켓을 읽고 업데이트하고 생성하는 것처럼 보입니다.

Atlassian.SDK NuGet 패키지는 .NET 사전을 사용하여 JSON 데이터를 구문 분석하는 대신 강력한 형식의 방식으로 Webhook에서 보낸 HTTP POST를 사용할 수 있습니까?

답변

2

AFAIK Atlassian.SDK는 Webhook 시나리오를 지원하지 않습니다. 그것은 당신이 작성한대로 Linq to Jira 확장과 클래스를 통해 REST API 호출 (쿼리 및 업데이트 문제)을 지원합니다.

그러나 .NET Dictionary를 사용하여 수동으로 JSON을 구문 분석해야한다고 생각하지 않습니다. ApiController에서 강력한 형식의 웹 훅 결과를 생성하기위한 몇 가지 간단한 단계를 만들었습니다. 나는 브라우저에서 시작했을 때

  1. 은 내가 웹 API와 새로운 ASP.NET MVC 응용 프로그램을 만들어

  2. Requestb.in (http://requestb.in/1g9lg8y1)

    에 임시 요청 컨테이너를 설정, 그것은 http://localhost:18177/에 액세스 할 수있었습니다

  3. 나는이 주소를 가리키는 락스에 2 webhooks을 설정 내가 CR Webhooks in Jira

  4. Jira에서 새로운 문제가 발생했고 Requestb.in 페이지에서 전체 본문 섹션에있는 클립 보드에 전체 JSON 콘텐츠를 복사했습니다.

  5. 요점은 다음과 같습니다.이 JSON 콘텐츠에서 맞춤 클래스를 만들었습니다. (원하는 도구 (예 : JSON2Sharp)로이 작업을 수행 할 수 있음), 개인적으로 Visual Studio의 Web Essentials 확장 프로그램을 사용하여 작업을 수행했습니다. (Edit -> Paste special -> Paste JSON as Classes)

  6. 마지막으로 나는이 문제의 요약을 수정 나는 JiraWebhookObject에 루트 이름을 변경, 나는

    public void Post([FromBody]JiraWebhookObject value) 
    
  7. 에 ValuesController의 Post 메소드의 서명을 수정했습니다. 업데이트 된 webhook의 결과로, 나는 웹 API 컨트롤러에서 강력한 형식의 결과를 얻었습니다. Strongly-typed webhook

관련 문제