Всем доброго вечера! Версия Laravel: 7 Не пинайте сильно за вопрос, ибо только начинаю знакомиться с Laravel. Самостоятельный поиск ответа в ПС дал несколько версий и примеров, но повторюсь, по ввиду малого опыта не удалось применить найденные знания для получения желаемого результата. Создал учебный проект по api из примера twilio[dot]com/blog/build-secure-api-php-laravel-passport. Локально на ноутбуке все моменты, рассматриваемые в статье получились. Postman при получении правильных запросов дает ожидаемые ответы. Но захотелось поработать с api из проекта на Delphi. Особых трудностей с Delphi не возникло, запросы отправляются, ответы приходят. Но кириллица в json приходит нечитаемая. Попытался экспериментировать с параметром JSON_UNESCAPED_UNICODE, как написано в многочисленных статьях, но по видимому не умею правильно применить параметр в response. Или не работает совсем, или работает и кириллические символы приходят нормально, но при этом ломается структура json-ответа. Вот как в статье написана функция индекс, отдающая все записи: Код (Text): public function index() { $ceos = CEO::all(); return response(['ceos' => CEOResource::collection($ceos), 'message' => 'Retrieved successfully'], 200); } Скриншот с первоначальным вариантом: Вот как получилось подправить ответ у меня, с поломкой структуры ответа: Код (Text): public function index() { $ceos = CEO::all(); return response(CEOResource::collection($ceos)->toJson(JSON_UNESCAPED_UNICODE), 200); } Скриншот с кириллицей, и поломанной структурой (не как в статье) ответа: Есть ли возможность получить кириллические символы в json-ответе, но не ломая структуру примера?
Вообще, кириллица не ломается, а кодируется. И типичные клиенты (коими, обычно, являются браузеры, а не десктопные приложения), прекрасно преобразуют коды обратно в читаемые символы. На вашем месте, я бы поискал библиотеку для делфи (кстати, ради интересу, на кой оно вам чёрт сдалось?), которая нормально понимает json но так-то ответ на ваш вопрос очевиден PHP: public function index() { $ceos = CEO::all(); return response(json_encode(['ceos' => CEOResource::collection($ceos), 'message' => 'Retrieved successfully'], JSON_UNESCAPED_UNICODE), 200); } Или как-то так, чтоб всё-таки было больше вызовов ларавеля: https://stackoverflow.com/questions/54990092/use-json-unescaped-unicode-in-api-resource-laravel Но, повторюсь, по дефолту PHP (именно он, а не Laravel) ничего особенного с джсоном не делают, и правильный клиент должен правильно расшифровать такие джсоны, вернув кириллицу на место. Я ни разу не использовал этот флаг с ларавелем, и вообще за 8 лет коммерческой разработки может раз или два он мне зачем-то понадобился, для какого-то кривого сервиса, кажется.
Ломается не кириллица, а структура ответа. Инерция, привычка, что-то для себя с академическими целями удобнее набрасывать на дельфи... И спасибо Вам огромное, получилось именно то, что нужно. Библиотеки для работы с json'om еще поищу, прототип и вся связка в целом заработала.
PHP: return response( ['ceos' => CEOResource::collection($ceos) -> toJson(JSON_UNESCAPED_UNICODE), 'message' => 'Retrieved successfully'], 200); внимательно смотрим что меняем..
И Postman и Advanced REST Client уже изобретены, скачаны, установлены). А на скрине набросок, чтобы хоть как-то проверить работу системы. Потом на досуге поэкспериментирую над чем-то более приближенном к реальности. В php и Laravel я пока абсолютный ноль, начинаю понимать что без базовых знаний тут совсем плохо. Посматриваю сейчас на книги и курсы, что есть в доступе.
Ну так для начала выучите php как язык. После делфей должно занять недельку от силы. https://www.php.net/manual/ru/langref.php --- Добавлено --- У него много своих особенностей в плане ООП, которые активно используются в Laravel (весь Laravel построен на так называемой "Магии PHP")