【问题标题】:POST request to Wordpress REST API returns an empty object对 Wordpress REST API 的 POST 请求返回一个空对象
【发布时间】:2021-12-12 19:57:51
【问题描述】:

我正在一个插件内创建一个Gutenberg block,其中包含用于压缩文件的 MediaUpload。然后我尝试添加一个回调,该回调将使用 zip 文件的 id 来获取附件 url,如果还没有,则在单独的资产区域中创建一个新文件夹,然后将文件解压缩到文件夹中。

现在我正在尝试使用 wp.apiFetch 使用 REST 来执行此操作。

我已经测试了响应,但即使响应正确通过,对象也是空的。

这是Edit.js 文件:

wp.apiFetch({
  path: '/name-support/v1/zipped/',
  method: 'POST',
  data: { id: 'test test test' },
}).then(data => {
  console.log('response: ', data);
});

这是 REST API 路由设置和回调函数:

add_action( 'rest_api_init', function () {
  register_rest_route( 'name-support/v1', '/zipped/', 
      [
        'methods' => WP_REST_Server::EDITABLE,
        'callback' => 'name_image_sequence_unzip',
        'permission_callback' => '__return_true'
      ] 
  );
});

function name_image_sequence_unzip($data) {
    return rest_ensure_response( $data );
}

【问题讨论】:

    标签: php reactjs wordpress wordpress-rest-api wordpress-gutenberg


    【解决方案1】:

    php 端的回调函数中,使用$_POST 变量而不是$data。您也可以使用wp_send_json_success 将数据作为json 对象而不是rest_ensure_response 返回。

    所以你的代码应该是这样的:

    add_action( 'rest_api_init', function () {
      register_rest_route( 'name-support/v1', '/zipped/', 
          [
            'methods' => WP_REST_Server::EDITABLE,
            'callback' => 'name_image_sequence_unzip',
            'permission_callback' => '__return_true'
          ] 
      );
    });
    
    function name_image_sequence_unzip( $_POST ) {
        return wp_send_json_success( $_POST );
    }
    

    当然,别忘了validatesanitize$_POST 收到的数据。

    让我知道你是否可以让它工作!

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2021-12-04
      • 2019-05-20
      • 2015-07-22
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      相关资源
      最近更新 更多