@quitting
Junior php

Как настроить показ полей API YII2?

Да я знаю что в yii2 реализована архитектура REST API но ребятам которые со мной работают это не понравилось, они захотели что-бы по конкретному запросу выдавались конкретные данные, и не нужно было дописывать всяких условий)

Есть модель "user" с полями name, age, token.
И модель "security" с полями time, status, hash.
При запросе site/api/user нужно показать {"name":'Tolik', "age":28} token нет.
А при запросе site/api/security {"status":true, "hash":'asdas5asd5asd', "token":'asdasd548wqf4as4f5'}

Если скрою в user->fields() не смогу отобразить токен при site/api/security.
И таких переплетеных моделей и свойств масса. Как мне элегантно обойти это?

У меня сейчас в лоб) Вытаскиваю данные из модели "security", помещаю в $data['security'] = $security
Потом достаю модель "user" и $data['token'] = $user->token.
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
toratoda
@toratoda
Можно создать класс Response реализующий интерфейс JsonSerializable. В методе интерфейса собирать свойства текущего класса и отдавать ввиде массива. В конструкторе класс будет принимать модель user и проставлять себе необходимые свойства.

Так у вас появится отдельный класс цель которого направлена только на формирование ответа (можно объявить абстрактный базовый класс и формировать ответы для каждого метода), а так же вы сможете у свойств указать типизацию. Так что вы будете точно знать что будет на выходе и не полагаться на массив.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Tiasar
Web Developer
А может проще сделать через связывание моделей и гетеры? Привели бы коды своих моделей...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы