Важность Api Сериализации Вывода

За последний год я говорил об API *миллионы раз.

Множество отзывов и вопросов возникло, когда я рассказал о сериализации как о « добавление уровня представления к вашим данным ".

MSDN говорит это так:

Сериализация — это процесс преобразования объекта в поток байтов для его сохранения или передачи в память, базу данных или файл.

Основная цель — сохранить состояние объекта, чтобы иметь возможность восстановить его в случае необходимости.

Обратный процесс называется десериализацией.

Разработчики PHP часто рассматривают процесс сериализации как использование функции.

сериализовать ().

Да, это одна из форм сериализации, но она не единственная, которая существует. Другой распространенный подход к сериализации данных — использование функции json_encode ().

Сегодня современные платформы автоматически преобразуют любой массив, возвращаемый методом контроллера, в JSON, то есть вам даже не нужно вызывать json_encode () самостоятельно.

Эта функция довольно удобна, но если вы создаете HTTP API ( AJAX/RESTful/Гипермедиа ), то вам нужно быть более точным в том, что вы возвращаете.

Наиболее частыми нарушениями являются следующие:

  
   

<Эphp class PlaceController extends CoreController { public function show($id) { return Place::find($id); } }

Извините за упрощенный код, но вот модель мы получаем( возможно с помощью ORM ) и вернуть результат напрямую.

Это кажется довольно невинным действием, но оно приводит к целому ряду проблем.



Не скрываться

Вы добавляете все поля к выходному результату при выполнении метода API. Если это внутренний API, то это может быть хорошо, но если эта информация будет распространяться повсюду в браузере или каким-то образом выйдет за пределы мобильного устройства, тогда вас действительно ждут плохие времена.

Тривиальный пример — пароли пользователей.

Конечно, данные зашифрованы, но вы явно не хотите, чтобы они попали в чужие руки.

Чуть менее заметные вещи — токены сброса пароля, утечка которых может привести к взлому пользователей.

Но проблема может быть более скрытой.

В примере с Место , конфиденциальная информация может утечь из вашей компании, когда вас попросят добавить контакт. электронная почта , предназначен только для внутреннего использования.

Если вы потратили месяцы на сбор этих местоположений и установили ряд уникальных контактов, вы не хотите, чтобы все данные были переданы потенциальным конкурентам.

Да, многие ORM позволяют задавать параметры" скрытый " И " видимый " свойства в черный или белый список, но с течением времени вероятность сохранения всех потенциально скрытых значений сводится к нулю, особенно если у вас есть младший сотрудник, не знающий, что одно из этих полей должно быть скрыто по умолчанию, и усталость рецензента кода.

может позволить проблеме осознаться во время напряженного дня.

Например, фрактал Это библиотека сериализации PHP, которую я создал для сериализации моих приложений API. Вот простой пример:

<Эphp use League\Fractal\Manager; use League\Fractal\Resource\Collection; // Create a top level instance somewhere $fractal = new Manager(); // Ask the ORM for 10 books $books = Book::take(10)->get(); // Turn this collection $resource = new Collection($books, function(array $book) { return [ 'id' => (int) $book->id, 'title' => $book->title, 'year' => (int) $book->yr, 'author' => [

Теги: #php #serialize #@Output() #formatmessage #fractal #Разработка веб-сайтов #php #Laravel

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.