Attualmente sto usando il seguente codice di inizializzazione sul mio modulo apiPerché il controller del riposo Yii2 fornisce una risposta in formato XML?
public function init()
{
parent::init();
Yii::$app->response->format = Response::FORMAT_JSON;
}
mio API restituisce la risposta in formato XML nel seguente esempio.
public function actionTest()
{
$items = ['one', 'two', 'three' => ['a', 'b', 'c']];
return $items;
}
Questa è la risposta:
<response>
<item>one</item>
<item>two</item>
<three>
<item>a</item>
<item>b</item>
<item>c</item>
</three>
</response>
L'unico modo in cui posso farlo funzionare è con l'aggiunta di questa linea a ciascuno dei comportamenti del controller. Ho letto la documentazione che dice che posso inizializzare questo sulla classe del modulo, quindi non ho bisogno di farlo in ogni controller. Non so perché dia l'XML comunque. Anche nel caso nel caso in cui l'unico modo è di aggiungerlo ai miei comportamenti, devo scrivere codice per gestire nome, codice, stato, tipo, precedente e codice o Yii fornisce yii \ rest \ Controller e yii \ rest \ ActiveController che gestisce automaticamente questo. Chiaramente vengono emessi automaticamente quando si verifica un errore.
{"name":"Not Found"
"message":"Page not found.",
"code":0,
"status":404
"type":"yii\\web\\NotFoundHttpException"
"previous":{"name":"Invalid Route","message":"Unable to resolve the request: api/home/",
"code":0,"type":"yii\\base\\InvalidRouteException"
}
}
Può essere che qualcos'altro come un'azione di comportamento o di classe cambia il formato di risposta app? Puoi provare var-dumping 'Yii :: $ app-> response-> format' in qualsiasi azione appena prima di restituire un valore. – Beowulfenator
Ottengo questo errore di analisi XML: non ben formato Numero riga 1, colonna 7: stringa (3) "xml" ------^ –