Совместно используйте формат JSON и JSONP в API REST Yii2

Я новичок в yiiframework.

Я хочу использовать формат JSONP и JSON вместе в API REST Yii2, это означает, что если вызов API нормальный, ответ получить json, и если вызов API с jsonp ajax, получить результат JSONP, я не могу найти что-либо на форумах или в стеке потока для настройки этого , Как мне это сделать? я использую Response::FORMAT_JSON в поведении в контроллер, но я хочу использовать Response::FORMAT_JSON а также Response::FORMAT_JSONP вместе в поведении контроллера. Как настроить вместе?

2

Решение

использование format собственностью yii\web\Response учебный класс:

public class YourController extends Controller {
/**
* json/jsonp witching example
*/
function actionJson(
$callback = null
) {
// retrieve data to be returned
$data = array(
// your data here
);
// set "fomat" property
Yii::$app->getResponse()->format =
(is_null($callback)) ?
self::FORMAT_JSON :
self::FORMAT_JSONP;
// return data
return (is_null($callback)) ?
$data :
array(
'data'     => $data,
'callback' => $callback
);
}
}
2

Другие решения

@turutosiya спасибо. Я знаю веб-ответы, но я использую этот код в контроллере API REST и хочу настроить конфигурацию в разделе поведения, я не хочу использовать конфигурацию ответа в действии, в yii и rest api это не нужно, мы можем настроить форматы поведения в контроллер: мой код:

public function behaviors()
{
/*
* set response header to application/json
*/
return ArrayHelper::merge(parent::behaviors(), [
'contentNegotiator' => [
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
],
]);
}

На данный момент, как настроить форматы «вместе» в поведении? У нас есть Response::FORMAT_JSONP если вы используете Response::FORMAT_JSONP все ответы становятся JSONP и другие звонки не работают. я хочу, если вызов API нормально отправить JSON ответ и если вызов API с JSONP метод, отправить JSONP ответ. также я хочу поместить access_token в заголовок, и я не знаю, как я могу это использовать.
Спасибо.

0

По вопросам рекламы [email protected]