如何在 .NET 6 中获取 webhook 响应数据

How to get webhook response data in .NET 6

我已经在我的 API 中创建了一个端点,我将使用它来使用 Uber 的 webhook。 这是我第一次使用 webhook,所以: 我将如何使用我的端点获得他们给我的响应?

这是他们将发送给我的内容(以下数据用于测试):

{
    "event_type": "orders.notification",
    "event_id": "c4d2261e-2779-4eb6-beb0-cb41235c751e",
    "event_time": 1427343990,
    "meta": {
        "resource_id": "153dd7f1-339d-4619-940c-418943c14636",
        "status": "pos",
        "user_id": "89dd9741-66b5-4bb4-b216-a813f3b21b4f"
    },
    "resource_href": "https://api.uber.com/v2/eats/order/153dd7f1-339d-4619-940c-418943c14636",
}

这是我的 Api 端点:(为空,因为我不知道如何处理它)

[HttpPost("/api/v1/.../delivery/hook")]
        [ProducesResponseType(200)]
        [ProducesResponseType(400)]
        [ProducesResponseType(404)]
        public async Task<IActionResult> HookDelivery()
        {
            return Ok("hook reached");
        }

当 webhook 事件发生时,源应用程序通常会触发一个 http POST。因此,最简单的方法是创建您提供的 JSON 对象的 C# 表示形式,并将其用作 API 方法的输入参数。像这样:

public class WebHookData
{
   public string EventType {get;set;}
   public string EventId {get;set;}
   etc....
}

然后

    [HttpPost("/api/v1/.../delivery/hook")]
    [ProducesResponseType(200)]
    [ProducesResponseType(400)]
    [ProducesResponseType(404)]
    public async Task<IActionResult> ExistTerminalSerialNumber(WebHookData webHookData)
    {
        // do something with your input here
        return Ok("hook reached");
    }

或一些通用的东西,并具有将传入对象“转换”为您想要的任何对象的自定义方法:

public async Task<IHttpActionResult> ExistTerminalSerialNumber([FromBody]JObject data)
{
    string eventType= data["event_type"].ToString();
        switch (eventType)
        {
            case "orders.notification":
                // do something
                return Ok();
            default:
                return BadRequest();
        }
}