Konstantin
если строить апи не отталкиваясь от кода, а отдельно, код всегда будет не совпадать с описанием апи. "добавили поле - забыли добавить в апи/наоборот" будет ежедневной проблемой, это не решается в общем случае никак иначе кроме как генерацией апи по аннотациям в коде
Ilya 🃏
Причем name на уровне экшена, глобальный нейм у них естественно разный, но этот баг так и не закрыли вроде
Konstantin
наоборот
Konstantin
сначала поправили аннотацию, поле появилось само
Vlad
говорю решайте эти проблемы с помощью describer своих, да мб контракты там не удобные,но жить можно.
Konstantin
захламленный код аннотациями разумная плата за всегда актуальную схему. и можно решать проблему именно хлама - вот выше рекомендуют способы. отрывать генерацию схемы от кода - идиотизм и самоубийство в очень короткой перспективе
Ilya 🃏
сначала поправили аннотацию, поле появилось само
Так откуда оно само появится, мы же не студия и не на готовых рест платформах пишем, полностью свой код)
Ilya 🃏
Свой json response формируется
Konstantin
ну вы что-то не так готовите, очевидно. респонс должен быть аннотированным классом-дто
Vlad
говорю решайте эти проблемы с помощью describer своих, да мб контракты там не удобные,но жить можно.
https://github.com/nelmio/NelmioApiDocBundle/blob/master/RouteDescriber/RouteDescriberInterface.php https://github.com/nelmio/NelmioApiDocBundle/blob/master/ModelDescriber/ModelDescriberInterface.php https://github.com/nelmio/NelmioApiDocBundle/blob/master/PropertyDescriber/PropertyDescriberInterface.php
Konstantin
а не руками собранным респонсом в контроллере. если у вас разработка на таком уровне, то да, рано вам в генерацию апи, порешайте сначала детские проблемы в процессах
Konstantin
о, ну началось. суньте себе в жопу ваши шуточки и лучше слушать научитесь
Konstantin
предлагаю вернуться к документированию апи. так вот, "добавилось новое поле в апи" - это "добавилось новое поле в аннотированный дто". то есть как только появилось поле в классе - оно появилось в схеме
Konstantin
не надо править несколько мест, не надо править контроллер, ровно одно место - дто с аннотацией
Konstantin
если щас у вас это не так работает и требует правки нескольких мест - решите сначала эту работу. в руками описанном апи нет смысла в свете изложенных выше причин - схема всегда будет расходиться с реальным поведением и это плохо, это множит на ноль всю пользу от схемы
Ilya 🃏
Если второе относится только к nelmio, а не симфоневскому сериалайзеру, то второй вопрос закрыт
Ilya 🃏
Spider
Уважаемые Участники чата Прошу вас о помощи Я ищу практику на Симфони без оплаты. Ищу задач и наставника. Если необходимо - взамен готов оказать помощь по друпал и прочему подобному Мои обстоятельства я объясню в личных сообщениях Админов прошу не удалять это сообщение - возможно я его повторю через пару дней
Ilya 🃏
Лучше бы на вопросы ответили)
Vlad
доки нету,код есть) Смотрите сорцы
Ilya 🃏
А то расписали "так делать неправильно, делай иначе", а про "иначе" только пару фраз кинули и ссылку на дескрайбер от нельмио, а можно ли использовать его ДО того как апи создано (чтобы архитектор отдал уже разработчику готовую инструкцию к новому апи) и через что именно оно описывается без нельмио - тишина
Vlad
а на счет описать контракт раньше кода,это в nelmio тоже можно сделать
Ilya 🃏
describer описывает доку на основе,твоего кода. То есть если в экшене есть дтошка, ага значит это реквест той ручки. Как пример.
Т.е. дескрайбер это локальная штука чисто нельмио, правильно понимаю? Я описываю в дто симфони всю инфу и просто на него натравливаю дескрайбер
Ilya 🃏
И допом мне в дескрайбере ничего не нужно расписывать
Ilya 🃏
(правда из названия кажется что ровно наоборот 😅)
Vlad
Т.е. дескрайбер это локальная штука чисто нельмио, правильно понимаю? Я описываю в дто симфони всю инфу и просто на него натравливаю дескрайбер
я же скинул ссылку на контракты,да это часть нельмио. То есть describer дополняют инфу твоей доки, при этом тебе не нужно засирать код анотациями, это все сделает за тебя describer.
Nikolay
Понял, спасибо, добрый человек)
https://habr.com/ru/post/262927/#comment_8505769
Nikolay
Понял, спасибо, добрый человек)
Можешь коммент прочитать, там есть вариант
Ilya 🃏
Можешь коммент прочитать, там есть вариант
Мне в этом плане интересной показалась https://stoplight.io/open-source/, там и мок сервер можно поднять как раз, тянуть инфу из сгенерированного симфони openapi. Правда вспомнил как я дружил нельмио со всякими опенапи сервисами и обычно это боль, то какие-то обязательные параметры нельмио не генерирует то версия устаревшая то еще что
Nikolay
я использую zircote/swagger
Ilya 🃏
я использую zircote/swagger
Попробую, спасиб)
Vlad
nelmio не очень, но это субъективно
тока nelmio использует zirocote/swagger))
Nikolay
Ilya 🃏
тока nelmio использует zirocote/swagger))
Ну, если визуальная часть, которая очень мягко говоря "не очень" это единственно что дает нельмио, то в цепочке доставки от php до стоплайт он точно излишен
Vlad
старая версия тоже?
страрая которая 2?
Vlad
ну во втрой нету) это с 3 завезли
Vlad
в 2017 году)
Nikolay
ну во втрой нету) это с 3 завезли
На проекте 2 ущербная)
Nikolay
Ну, если визуальная часть, которая очень мягко говоря "не очень" это единственно что дает нельмио, то в цепочке доставки от php до стоплайт он точно излишен
Как вариант, я пробовал накатить локально контейнер из образа swaggerapi/swagger-ui, чтобы доку можно было смотреть
Alexey Mishurovskiy
Всем привет. кто-то ковырялся с https://fuelphp.com/?
Иван
Всем привет. кто-то ковырялся с https://fuelphp.com/?
FuelPHP is a simple, flexible, community driven PHP 5.3 ммм, свежачок
Alexey Mishurovskiy
там просят меня помочь доработать, мне интересно там совсем по горло говнокод или что-то можно порешать.
Konstantin
https://cdn.weblab.pro/yfzky.png
Руслан 🇲🇨
Konstantin
так, и?
Ivan
Всем привет! Вопрос по дефолтному функционалу авторизации через форму. Задача авторизовывать пользователя через телефон. Человек вводит номер телефона, ему приходит код, он его вводит и вот он уже авторизован. При таком описании в принципе все просто, и реализовывается несложно. Но в том случае, если этот человек для нас новый, т.е. ещё не зарегистрирован, задача спросить у него имя, пароль, email. И уже имея все эти данные, спокойно зарегистрировать и авторизовать.
Руслан 🇲🇨
так, и?
Что "и"?
Konstantin
ёпт 🙂 вы мне шлёте реплай со скриншотом, от меня что надо?
Руслан 🇲🇨
Я выполнил команду "./bin/console debug:router". Она дала такой результат. И как это мне поможет?
Ivan
Вопрос: городить эту логику как-то внутри custom form auth, или в контроллере? Для меня близок вариант реализации в контроллере, однако не пойму что тогда написать в этом форм аудентификаторе, оставить просто self validate passport?
Иван
две разных формы
Иван
причём емейл тоже надо подтверждать
Павел
@sc0rp10 А не оверхедно ли под каждый респонс писать класс, только для того, чтобы доку заполнить?
Konstantin
оверхедно по сравнению с чем?
Павел
оверхедно по сравнению с чем?
Ну например посравнению с тем чтобы не писать responseDTO
Иван
@sc0rp10 А не оверхедно ли под каждый респонс писать класс, только для того, чтобы доку заполнить?
если коллекция отдаётся, то наверное есть некоторая избыточность а конкретные дто - какой вариант ещё? контракт должен быть законтрактован
Павел
если коллекция отдаётся, то наверное есть некоторая избыточность а конкретные дто - какой вариант ещё? контракт должен быть законтрактован
Для read в json ? Т.е. мы берем данные из БД, потом мапим их на класс, чтобы замапить потом в array обпатно а потом в json?
Павел
Не, я понмиаю, когда есть сложная ридка, где например можно что-то еще форматнуть
Иван
Ну например посравнению с тем чтобы не писать responseDTO
не надо писать специальные респонс дто а извлечённые из базы данные точно надо в дто
Konstantin
Ну например посравнению с тем чтобы не писать responseDTO
я не понимаю о каком оверхеде речь: "дольше писать" или "больше ресурсов сервера жрет"?
Иван
Зачем?
затем, чтобы точно знать на уровне конструктора, что данные из базы соответствуют контракту на последнем метре оптимизации можно перекрестясь и обзанавшись тестами отказаться от мапинга, но до того надо контроллировать типы
Иван
на минуту if('0') в пыхе и яваскрипте по разному работают надо кастить в инт или в бул
Павел
Вот у меня массив [{id,name}] я прекрасно получаю его из бд и сразу вывожу в респонс в виде массива. Зачем мне еще проклака в видео dto?