Webhook验证

时间:2019-02-15 18:55:42

标签: asp.net asp.net-mvc webhooks

我正在尝试在asp.net mvc api中编写一个Webhook接收器。

但是问题是webhook初始化应用需要一种奇怪的验证方法。他们需要我添加以下代码,以便进行验证并允许我在其仪表板中添加URL。

  `<?php if (isset($_GET['zd_echo'])) exit($_GET['zd_echo']); ?>`

您认为我可以在asp.net中实现什么?到目前为止,我一直尝试遵循。 (它在邮递员中有效,但他们无法验证。)

// POST api/<controller>
    public string Post([FromBody]CallNotification value, string zd_echo)
    {
        if( zd_echo != null && zd_echo != "")
        {
            return value.zd_echo;
        }
        else
        {
           this.AddCall(value);
            return value.status_code;
        }
    }

enter image description here

1 个答案:

答案 0 :(得分:1)

首先,我不是Php开发人员。其次,这里有很多假设,因此这完全基于您发布的内容。

  • <?php if (isset($_GET['zd_echo'])) exit($_GET['zd_echo']); ?>
    • $_GET是来自HTTP GET query string 变量。因此,这是一个GET请求与您的API预期的POST
    • 该代码正在回显zd_echoquery string键的值,例如http://example.com/?zd_echo=foo将回显/响应foo (如果已设置) isset

基于以上假设:

// Just echo the value of the zd_echo key in the query string if it's set
public IHttpActionResult Get([FromUri] string zd_echo)
{
    //if not set/null return HTTP 200
    if (string.IsNullOrWhiteSpace(zd_echo))
        return Ok();

    return ResponseMessage(new HttpResponseMessage
    {
        Content = new StringContent(zd_echo)
    });
}

因此,对http://example.com/api/webhook?zd_echo=bar的请求将:

  • 回复bar
  • Content-Type: text/plain; charset=utf-8

否则,类似http://example.com/api/webhook?zd_echo之类的内容将仅以HTTP/1.1 200 OK

响应

高度。