如何使用Javascript库将WP REST API与自定义端点一起使用?

如何使用Javascript库将WP REST API与自定义端点一起使用?,javascript,wordpress,rest,wp-api,Javascript,Wordpress,Rest,Wp Api,我有一个自定义端点,它只返回一个测试字符串。我可以通过导航到mydomain.com/wp-json/mytools/v1/method/get_user_data到达该端点,它会正确返回我的测试字符串,但是,我希望能够使用Javascript到达该端点,并且我了解到wp api会自动处理身份验证,因此我应该能够使用此方法获取当前登录的用户 我需要的是能够使用wp.api.mytools.method.get_current_用户之类的东西,并获取当前登录用户的信息。这可能吗 这是我创建端点的方

我有一个自定义端点,它只返回一个测试字符串。我可以通过导航到mydomain.com/wp-json/mytools/v1/method/get_user_data到达该端点,它会正确返回我的测试字符串,但是,我希望能够使用Javascript到达该端点,并且我了解到wp api会自动处理身份验证,因此我应该能够使用此方法获取当前登录的用户

我需要的是能够使用wp.api.mytools.method.get_current_用户之类的东西,并获取当前登录用户的信息。这可能吗

这是我创建端点的方式:

    register_rest_route( 'mytools/v1', '/method/(?P<method>[\w]+)', array(
        'methods' => 'GET',
        'callback' => 'invoke_method',
    ));

总的来说,是的,这是可能的

具体地说,如果您引用的是wpapi,那么它将处理身份验证。否则,您将需要使用Cookie、Nonce、Basic Auth或JWT自己实现身份验证

对于第二部分,可以使用wp.api.mytools.method.get\u current\u用户之类的工具来获取信息。您需要的是一个客户端库节点wpapi,并对其进行扩展以包括您的类和函数,例如mytools和method


希望这有助于澄清

此功能已经由WordPress在WP_REST端点“…/WP json/WP/v2/users/me上实现。除了登录的cookie WP之外,REST身份验证还需要由查询参数“\u wpnoce”指定的nonce。此nonce的值是通过调用wp\u create\u nonce“wp\u rest”生成的。一个普通的WordPress前端页面将包含脚本…/wp includes/js/api-request.js。此脚本将定义一个全局wpApiSettings.nonce,该全局wpApiSettings.nonce将包含此nonce,以便您可以使用请求“…/wp json/wp/v2/users/me”?\u wpance='+wpApiSettings.nonce。因此,您可以使用jQuery.get

jQuery.get(
    '.../wp-json/wp/v2/users/me?_wpnonce=' + wpApiSettings.nonce,
    function( response ) {
        var userData = JSON.parse( response );
    ) }
);

如果您只想获得当前用户,我认为您不需要Backbone.js。Backbone.js将使用CRUD同步集合和模型,而您没有这样做。

我实际上指的是包含的主干lib。wp_get_current_用户部分只是一个占位符,我正试图用它做一些不同的事情,但添加_wpnce参数正是我所需要的,谢谢!!最后一个问题。。。如何在不使用ajax请求的情况下实现相同的功能?比如,不是向“/wp json/mytools/v1/method”发送请求,而是执行类似{whatever}.mytools.method的操作,我不理解你的问题。如果您直接使用WordPress REST API,那么您必须发送一个HTTP请求,因为对该请求的响应是JSON而不是HTML,所以应该由JavaScript处理。因此,我认为AJAX是必要的。因为WordPress身份验证需要nonce,避免发送nonce的唯一方法是用您自己的身份验证替换WordPress身份验证,但身份验证是您的责任,而不是WordPress的责任。我的意思是,我没有编写$.get'/wp json/mytools/do_this',{},函数{}请求,能够像wp.api.mytools.do_那样编写它,这是您在尝试调用WordPress服务器上的通用函数吗?WP REST API和Backbone.js不是为此而设计的。这是一个代表性状态转移REST的解决方案。它将服务器上的集合和模型与客户端上相应的集合和模型同步。它不直接支持调用函数,而是支持CRUD在对象上创建、读取、更新和删除语义。
jQuery.get(
    '.../wp-json/wp/v2/users/me?_wpnonce=' + wpApiSettings.nonce,
    function( response ) {
        var userData = JSON.parse( response );
    ) }
);