如何从自定义REST API端点返回图像?

时间:2017-10-03 作者:nfw

我是Wordpress开发的新手;试图从自定义端点返回图像,但它似乎希望将所有内容序列化为JSON。

我确实使用了echo. 那是黑客吗?

我还尝试使用WP_HTTP_Response, 但这似乎不起作用。

我的代码:

require \'vendor/autoload.php\';

use Intervention\\Image\\ImageManagerStatic as Image;

function prefix_generate_cover_photo($data) {
    $image = Image::make(plugin_dir_path(__FILE__) . \'image.png\')->response();
    $response = new WP_REST_Response($image, 200, array(
        \'Content-Type\' => \'image/png\'
    ));
    return $response;
}

add_action( \'rest_api_init\', function () {
    register_rest_route( \'prefix/v1\', \'/photo\', array(
        \'methods\' => \'GET\',
        \'callback\' => \'prefix_generate_cover_photo\',
    ));
});
这是可行的,但我不确定这是否是一种好的做法:

function prefix_generate_cover_photo($data) {
    echo Image::make(plugin_dir_path(__FILE__) . \'image.png\')->response();
}
有什么想法吗?

1 个回复
SO网友:Mostafa Soufi

echo 在rest api中,无效!您应该使用return 输出到Rest API。

例如:

function prefix_generate_cover_photo( WP_REST_Request $request ) {
    // Get method params
    $params = $request->get_params();

    // Data
    $data = array(
        \'url\'   => \'The image url\',
        \'title\' => \'The image title\',
    );

    // Create the response object
    $response = new WP_REST_Response( array( \'image\' => $data ) );

    // Add a custom header (Optional)
    //$response->header( \'Cache-Control\', \'no-cache\' );

    return $response;
}

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x