我是否需要创建终结点?

时间:2020-08-09 作者:myhappycoding

结果是I\'m trying to integrate witei\'s CRM into a website. 根据witei文件,I must indicate a url (webhook), 我想在哪里接收已更改属性的信息,以便我可以随时更新网站的属性。

信息通过POST method 服务之所以有效是因为it returns the data in JSON format, 通过测试https://beeceptor.com/ 服务(生成临时端点)。

事实上,根据我所阅读(或理解)的内容,我必须按照Wordpress文档中的步骤在Wordpress中创建端点:https://developer.wordpress.org/rest- api/扩展rest api/添加自定义端点/

我的问题是:我的方向正确吗?如果是这样。。。创建端点后,是否必须创建任何额外文件?或者只包含“register\\u rest\\u route”功能,不需要做任何其他事情?我尝试过按照指示操作,但总是出现错误404。

enter image description here

涉及的代码是:

//Testing webhook
add_action( \'rest_api_init\', function () {
  register_rest_route( \'real-estate-lite/v1\', \'/endpoint\', array(
    \'methods\'  => \'POST\',
    \'callback\' => \'my_awesome_func\',
  ) );
} );

function my_awesome_func( $request ) {
     $data = $request->get_json_params();
     error_log( print_r( $data, true ) );
}
在Witei CRM中,我得到了以下结果:

enter image description here

有人能帮我吗?还是把我带到正确的方向?非常感谢。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我的方向对吗?

是的,如果我是你,我也会使用REST API。

我尝试过按照指示操作,但总是出现错误404。

这实际上是正常的,如果请求方法不是POST,例如使用浏览器手动访问/访问example.com/wp-json/real-estate-lite/v1/endpoint 其中(HTTP)请求方法为(或默认为)GET。

这之所以正常是因为methods 端点的POST <仅限em(即。\'methods\' => \'POST\'), 因此,所有其他请求方法(如GET)都是不允许的,因此当通过GET或其他不允许的(HTTP)方法访问端点时,WordPress会抛出错误404。

因此,例如,如果希望允许GET方法,则设置methods 对于这样的数组:

register_rest_route( \'real-estate-lite/v1\', \'/endpoint\', array(
    \'methods\'  => [ \'POST\', \'GET\' ], // allowed request methods
    \'callback\' => \'my_awesome_func\',
) );

/* The above code is equivalent to:
register_rest_route( \'real-estate-lite/v1\', \'/endpoint\', array(
    // Endpoint 1, for POST request method.
    array(
        \'methods\'  => \'POST\',
        \'callback\' => \'my_awesome_func\',
    ),

    // Endpoint 2, for GET request method.
    array(
        \'methods\'  => \'GET\',
        \'callback\' => \'my_awesome_func\', // * the same callback
    ),
) );
*/
但当然,在您的情况下,您不会希望这样做,因为webhook使用POST方法连接到您的自定义WordPress REST API端点。但出于测试目的,您可以暂时允许GET请求(然后使用浏览器转到端点)。

正如您在示例中所看到的,我们可以在一条路由上有两个或多个端点,并且每个请求方法都应该有自己的回调。

顺便说一句,很抱歉之前没有真正理解您的问题。:)