REST Yii2 & hexadecimal escaping

Всё что касается построения API
Ответить
sharp
Сообщения: 67
Зарегистрирован: 2014.01.29, 14:24

REST Yii2 & hexadecimal escaping

Сообщение sharp »

Здравствуйте,

смотрю через curl ответ от сервера, и он почему-то возвращает все в виде экранированных символов юникода, как отключить такое поведение?

Вот часть возврата сервера:
[{"id":1,"title":"\u041b\u044e\u0431\u043e\u0432\u044c"},{"id":2,"title":"\u....
использую Yii2 yii\rest\ActiveController + ActiveRecord
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: REST Yii2 & hexadecimal escaping

Сообщение zelenin »

стандартное поведение. переназначить json response formatter

Код: Выделить всё

<?php

namespace common\components;

use yii\helpers\Json;

class JsonResponseFormatter extends \yii\web\JsonResponseFormatter
{
    protected function formatJson($response)
    {
        $response->getHeaders()->set('Content-Type', 'application/json; charset=UTF-8');
        $response->content = Json::encode($response->data,JSON_UNESCAPED_UNICODE);
    }
}

 
sharp
Сообщения: 67
Зарегистрирован: 2014.01.29, 14:24

Re: REST Yii2 & hexadecimal escaping

Сообщение sharp »

поставил файл в common\components но как его подключить?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: REST Yii2 & hexadecimal escaping

Сообщение zelenin »

Код: Выделить всё

    'components' => [
        'response' => [
            'formatters' => [
                Response::FORMAT_JSON => common\components\JsonResponseFormatter::className()
            ]
        ]
    ]
 
sharp
Сообщения: 67
Зарегистрирован: 2014.01.29, 14:24

Re: REST Yii2 & hexadecimal escaping

Сообщение sharp »

таки видимо подключило,

HTTP/1.1 500 Internal Server Error
Server: nginx/1.0.15
Date: Wed, 09 Jul 2014 21:48:11 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.4.30
Content-Length: 0

осталось посмотреть что бросает ошибку ..
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: REST Yii2 & hexadecimal escaping

Сообщение zelenin »

sharp писал(а):таки видимо подключило,

HTTP/1.1 500 Internal Server Error
Server: nginx/1.0.15
Date: Wed, 09 Jul 2014 21:48:11 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.4.30
Content-Length: 0

осталось посмотреть что бросает ошибку ..
в логах посмотрите. Вариант с рабочего проекта
sharp
Сообщения: 67
Зарегистрирован: 2014.01.29, 14:24

Re: REST Yii2 & hexadecimal escaping

Сообщение sharp »

пока не ясно, логи пустые(видимо не успевает скинуть)
sharp
Сообщения: 67
Зарегистрирован: 2014.01.29, 14:24

Re: REST Yii2 & hexadecimal escaping

Сообщение sharp »

Код: Выделить всё

'response' => [
            'formatters' => [
                yii\web\Response::FORMAT_JSON => common\components\JsonResponseFormatter::className(),
            ],
        ], 
вот рабочий вариант для меня.

@zelenin - большое спасибо!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: REST Yii2 & hexadecimal escaping

Сообщение zelenin »

ну конечно. нужно полный класс указывать либо импортировать класс в начале файла. Пользуйтесь IDE - все вам подскажет.
sharp
Сообщения: 67
Зарегистрирован: 2014.01.29, 14:24

Re: REST Yii2 & hexadecimal escaping

Сообщение sharp »

только наверное лучше так:

Код: Выделить всё

    protected function formatJson($response)
    {
        //$response->getHeaders()->set('Content-Type', 'application/json; charset=UTF-8');
        parent::formatJson($response);
        $response->content = Json::encode($response->data, JSON_UNESCAPED_UNICODE);
    }
sharp
Сообщения: 67
Зарегистрирован: 2014.01.29, 14:24

Re: REST Yii2 & hexadecimal escaping

Сообщение sharp »

хотя в данном случае не столь важно
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: REST Yii2 & hexadecimal escaping

Сообщение zelenin »

избыточно
Ответить