对 Wordpress REST API 的 POST 请求返回一个空对象
Posted
技术标签:
【中文标题】对 Wordpress REST API 的 POST 请求返回一个空对象【英文标题】:POST request to Wordpress REST API returns an empty object 【发布时间】: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 );
【问题讨论】:
【参考方案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 );
当然,别忘了validate
和sanitize
从$_POST
收到的数据。
让我知道你是否可以让它工作!
【讨论】:
以上是关于对 Wordpress REST API 的 POST 请求返回一个空对象的主要内容,如果未能解决你的问题,请参考以下文章
javascript WordPress查询多种帖子类型(REST API),对REST API的请求 - 查询多个帖子类型并按ACF字段对数据排序
对 Wordpress REST API 的 POST 请求返回一个空对象