自定义WP API终结点正文数据为空

时间:2021-01-27 作者:Ovidiu

我有一个奇怪的问题,让我头痛不已。这可能是我忽视的一件小事,但就我的一生而言,我无法理解它。

前提是:

我向wp环境中的自定义注册api端点发出POST请求,并从表单向其发送json数据。内容类型设置正确,如果我通过转储$请求进行调试->;get\\u body()它显示我传递的正确数据我也尝试增加最大上传大小和帖子大小,但是,由于我作为测试使用的文件是20 KB,我认为这不是问题所在。

我希望有人能帮助我认识到我的错误。

请注意,发送的json中没有错误,因为我使用https://jsonformatter.curiousconcept.com/

下面是一段代码片段。请注意,URL在这里不是真实的,但在我的环境中是真实的。此外,由于字符限制,我无法在代码段中发布整个base64图像,但请确保它是正确的。我甚至试过使用1px x x 1px透明图像,我也遇到了同样的问题。

var image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QDeRXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAAA4YwAA6AMAADhjAADoAwAABwAAkAcABAAAADAyMTABkQcABAAAAAECAwCGkgcAFgAAAMAAAAAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAABgCAAADoAQAAQAAAGIBAAAAAAAA...";

var data = {
    \'test\': \'hello world\',
    \'image\': image
};

var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify(data);

var requestOptions = {
    method: \'POST\',
    headers: myHeaders,
    body: raw,
    redirect: \'follow\'
};

fetch("/wp-json/test/v1/testapi", requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log(\'error\', error));

1 个回复
SO网友:Ovidiu

我已经解决了这个问题。它与json/javascript/api无关。这是一个简单的tmp文件夹所有权问题。由于管理请求的php没有抛出错误,因此我从未注意到PHP NOTICE 说要检查临时文件夹中的权限,因为php无法在那里上载临时文件。事实上,虽然权限很好,但组所有权却不好。

很抱歉浪费了大家的时间。非常感谢。