[PHP]Slim Frameworkで応答をjsonp形式で返す

カテゴリ: SlimFramework

Slim Frameworkで応答データをjsonp形式で返したい場合は、下記のようにすればよいです。jsonpのcallback関数名は、通常クライアントから指定してもらうことが多いです。

$app->get('/', function (Request $request, Response $response) {
    $data = [
        "foo" => "bar",
        "foo2" => "bar2",
    ];
    $callback = "onCallback";

    // レスポンスヘッダをセット
    $response = $response->withHeader('Content-Type', 'application/javascript; charset=UTF-8');

    // レスポンスボディをセット
    $jsonString = json_encode($data);
    $response = $response->write("{$callback}({$jsonString});\n");
    return $response;
});

ちなみにjsonpではなく、jsonで返したい場合はwithJson()を呼ぶだけで良いです。Content-TypeヘッダはwithJson()メソッドが自動でセットしてくれます

$app->get('/', function (Request $request, Response $response) {
    $data = [
        "foo" => "bar",
        "foo2" => "bar2",
    ];
    return $response->withJson($data);
});
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。