• Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, а так вы на бекенде все таки :-)
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Можно, а то и нужно, но если вы к этому подойдете с позиции аля "бекенд не знает ничего о приложении" - будет хреново.


    Vitsliputsli, у меня где-то написано про такую позицию? Если описание DTO на фронтенл для API вызывает такую реакцию, то у бекенд разработчика проблемы с самооценкой наверное.

    В качестве вывода, в Вашем случае фронт все таки не могут предлагать контракт взаимодействия с беком путем написания его в Swagger со последующим обсуждением и правками с бэком?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Антон Бреславский, что значит требование заказчика? Это требование было в ТЗ, но архитектура не предусмотрела? Косяк архитектора, как я и написал.
    Требования не было в ТЗ? Заказчик идёт нахрен или заключает новый договор на много денег, т.к. данное изменение требует переработки архитектуры. Не вижу ничего необычного.


    Я не писал, что его не было. Оно было изначально. И почему фронты не могут написать структуру данных которая им нужна, тоже не понятна для выполнения этого требования в виде вывода виджета?

    Будет он каждый раз дергать запрос и 1 000 000 строк или сделает слой.


    Не понял подвоха :-) Причем тут заказчик? Есть агрегация сложная, сделай слой и храни в мемкеше.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Утрируя: для фронта это разница меж /get/uuid и /uuid/get, для бэка это полная переделка всего кода или костыль с вытягиванием половины базы на каждый запрос.


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

    Мне в дизайне нужно вывести, это не мой каприз, а требование заказчика, как это сделает бэк мне какая разница? Будет он каждый раз дергать запрос и 1 000 000 строк или сделает слой.

    Опять же, если Ваша архитектура сильно завязана на REST API, значит архитектура плохая.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, спасибо за Вашу дискуссию, она достаточно предметна.
    Разрешите мне еще вставить отрывок из другого моего комментария:

    Мне кажется проблема в том, что бекенд разработчики не верно понимают разработку бизнес-логики и разработку интерфейса доступа к ней и к данным. Интерфейс на бекенд может быть HTTP, сокеты ли даже командная строка. Это всего лишь интерфейс. Эти разработчики при проектировании ендпойнта /login часто зашивают в контроллер бизнес-логику, работу с базой, генерацию сессии и т.д. И именно поэтому они связывают проектирование API с разработкой кода функции и именно поэтому когда им нужно добавить например GraphQL им нужно дублировать функционал.


    Что скажите? Или API это больше чем данные?

    Почему заранее нельзя договориться с фронтом как данные будут бегать туда-обратно и начать работу параллельно? Такого кейса нет? Фронты не могут предложить вариант как это видят? Вы на беке дадите добро или внесете изменения и у вас будет контракт с фронтами. Вы спокойно пойдете делать и они тоже. Потом через какое-то время вы соединитесь и проверите, что ваш контракт выполнен. Что тут не так?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, такой подход :-) Бекенд идеален и потом его как-то нужно выписать в требования от фронта. Ну нарисовано в дизайне и заказчик хочет - разве это с потолка?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, получается формализовать работу никак и фронты вынуждены ждать когда появиться бэк, ну или просить их JSONчики хотя бы пока на время прислать?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Василий Банников, больше похоже на маппинг.

    Мы делаем это так, т.к. можем десериализовать все дерево ответа сразу.

    @model()
    export class User {
    
      @field({jsonFieldName: 'first_name'})
      firstName: string;
    
    }
    
    http.get('/users/1').pipe(map(resp => deserialize(resp, User))


    У бэка нейминг через snack_case, у нас нормальный cameCase.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, а прототип? :) То есть получается бэк лучше поймет как данные из его API сматчить с дизайном?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Спасибо за очень не конструктивный ответ и помощь в оценке моей компетенции. Имеет место быть :-)
    Какая, не какая помощь :-)
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    про дизайнера - нет. Ни фига не понятно, что он там нарисовал и какая там логика кроется за каждой кнопкой.


    У фронтов больше опыта понять, что там вывести в дизайне. Они накидают сами Вам Swagger на бек, вы посмотрите и поправите с чем не согласны и у них с вами контракт. Не бэк просят писать сваггер, их просят посмотреть требования в сваггере и согласовать их.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, тогда вопрос только удобства. Если Вам дадут супер удобный редактор, чисто гипотетически Вы бы писали?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Роман Мирр, спасибо, а разве не понятно что там дизайнер нарисовал? Дизайнер тоже ведь с проджект-менеджером это делал. Есть таблица, в дизайне, сразу понятно, что туда вывести или нет?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Vitsliputsli, это уже слой бизнес логики. На фронте по сути нужны только данные для рендера, как начать разработку интерфейса. Что в бизнес-слое это уже к аналитику.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Если выше написанное не про вас, не воспринимайте на свой счет, если что-то зацепило - то стоит задуматься.

    Это очень удобная позиция :-) Вы скорее всего *** и если Вас это зацепило, то это Вы :-)

    Поэтому вопрос не в том, что "фронтенд проектирует API и делает это всегда плохо", а в том, что по вашему описанию, вы сейчас руководствуетесь неправильными принципами подходя к проектированию API, это и есть проблема.


    Мне кажется проблема в том, что плохие бекенд разработчики не верно понимают разработку бизнес-логики и разработку интерфейса доступа к ней и к данным. Интерфейс на бекенд может быть HTTP, сокеты ли даже командная строка. Это всего лишь интерфейс. Эти разработчики при проектировании ендпойнта /login часто зашивают в контроллер бизнес-логику, работу с базой, генерацию сессии и т.д. И именно поэтому они связывают проектирование API с разработкой кода функции и именно поэтому когда им нужно добавить например GraphQL им нужно дублировать функционал.

    Почему заранее нельзя договориться с фронтом как данные будут бегать туда-обратно и начать работу параллельно? Такого кейса нет? Фронты не могут предложить вариант как это видят? Вы на беке дадите добро или внесете изменения и у вас будет контракт с фронтами. Вы спокойно пойдете делать и они тоже. Потом через какое-то время вы соединитесь и проверите, что ваш контракт выполнен. Что тут не так?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, каркас кода и DTO. Но главное, даже не это. Если, они заранее не договорятся, каждый будет писать свое. Писать JSON или Swagger - получается только вопрос удобства?
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Aetae, получается вариант, когда из сваггера генерируется сервер нереален? В этом случае нет повторения работы.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Vitsliputsli, фронтенд не пишет API, он предлагает. Бекенд смотрит, правит будущий контракт и говорит - погнали, это будет работать так.
  • Как передать на бекенд требования к API?

    breslavsky
    @breslavsky Автор вопроса
    Василий Банников, спасибо, вот тут не понятно. Если в API изменилось имя поля, как Вы оставите на фронте функционал работающим?