Size: a a a

Software Design/Architecture/Zen

2021 February 02

k

knopkod4v in Software Design/Architecture/Zen
Denis Ko
Всем привет. Подскажите пожалуйста жертве soap и тп rpc, как с точки зрения rest правильно: есть профиль, он зашифрован(dpo). Как правильно показывать маскированный данные и полные(хозяину или ДПО офицеру): /{profile_uid}?unmask=true|false или /{profile_uid}[/unmask]
источник

DK

Denis Ko in Software Design/Architecture/Zen
Спасибо. Покурю
источник

k

knopkod4v in Software Design/Architecture/Zen
Denis Ko
Всем привет. Подскажите пожалуйста жертве soap и тп rpc, как с точки зрения rest правильно: есть профиль, он зашифрован(dpo). Как правильно показывать маскированный данные и полные(хозяину или ДПО офицеру): /{profile_uid}?unmask=true|false или /{profile_uid}[/unmask]
а вообще выглядит как будто у тебя 2 разных куска апишки, один для владельца профиля, а другой для этих вот "ДПО офицеров"
источник

HH

Human Human in Software Design/Architecture/Zen
Denis Ko
Спасибо. Покурю
Спойлер. Ответа на твой вопрос там не будет. Ну точнее ты поймешь, что он вне зоны спеки
источник
2021 February 03

MG

Max Grom in Software Design/Architecture/Zen
Denis Ko
Всем привет. Подскажите пожалуйста жертве soap и тп rpc, как с точки зрения rest правильно: есть профиль, он зашифрован(dpo). Как правильно показывать маскированный данные и полные(хозяину или ДПО офицеру): /{profile_uid}?unmask=true|false или /{profile_uid}[/unmask]
Так это разграничение уровня доступа, а не вопрос к структуре эндпоинта. Эндпоинт может быть один и тот же
источник

DK

Denis Ko in Software Design/Architecture/Zen
Все так. Запилив один метод для обработки 2х случаев мне внутри нужно будет чекать параметр на тру и наличие секьюрной роли
источник

DK

Denis Ko in Software Design/Architecture/Zen
В случае 2х эндоинтов я пилю второй метод где я через аоп чекаю роли и внутри метода тупо возвращаю то что надо
источник

MG

Max Grom in Software Design/Architecture/Zen
Я чуть о другом - вам не нужно передавать параметры. Определять доступность должна система. Если я правильно понял кейс
источник

DK

Denis Ko in Software Design/Architecture/Zen
Я запили второй эндопинт, но мне сказали: это безоьразие
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Denis Ko
Всем привет. Подскажите пожалуйста жертве soap и тп rpc, как с точки зрения rest правильно: есть профиль, он зашифрован(dpo). Как правильно показывать маскированный данные и полные(хозяину или ДПО офицеру): /{profile_uid}?unmask=true|false или /{profile_uid}[/unmask]
с точки зрения REST оба кейса (через path и через query params) есть два ресурса. То есть ты можешь обе репрезентации идентифицировать явно. Потому "как тебе удобнее".
источник

DK

Denis Ko in Software Design/Architecture/Zen
Max Grom
Я чуть о другом - вам не нужно передавать параметры. Определять доступность должна система. Если я правильно понял кейс
Думаю я криво объяснил. По таску данные всегда возвращаются маскированными и только при нажатии на волшебную кнопочку мы перезапрашиваем немаскированные
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть query или path - пофигу. Все это часть уникального идентификатора ресурса. А потому "удобства" надо смотреть в ограничениях роутера твоего фреймворка. Грубо говоря если есть возможность убрать if-ы за счет роутинга то лучше так. Многие роутеры позволяют это делать и тем и другим способом.
источник

MG

Max Grom in Software Design/Architecture/Zen
Sergey Protko
с точки зрения REST оба кейса (через path и через query params) есть два ресурса. То есть ты можешь обе репрезентации идентифицировать явно. Потому "как тебе удобнее".
Структуру можно делать как удобно, безусловно. Мой вопрос касается того, точно ли там нужны эти параметры
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Max Grom
Структуру можно делать как удобно, безусловно. Мой вопрос касается того, точно ли там нужны эти параметры
повторюсь - не важно. Важно как ты будешь идентификатор ресурса на сервере парсить и мэпить на операцию. Из своего опыта скажу что "один экшен и два роута и ифы внутри" это всегда хуже двух отдельных роутов. Но многие фреймворки позволяют тебе query params мэпить на разные роуты, вопрос удобства и читаемости конфигурации.

А тем кто клиент делает в целом пофигу. У них там будет чет типа http.get(\/profiles/${id}/unmasked\`) или `http.get(\/profiles/${id}\`, {unmasked: true})`
источник

MG

Max Grom in Software Design/Architecture/Zen
Уточню, мне показалось, что есть 2 роли пользователей которым нужно отдавать даные по разному, но данные об одном и том же. Если это не так, тогда прошу извинить
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Добрый день!

Внутри агрегата есть сущности.
Создаваться эти сущность тоже должны внутри агрегата или могут быть созданы отдельно и готовыми переданы в конструктор агрегата?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Max Grom
Уточню, мне показалось, что есть 2 роли пользователей которым нужно отдавать даные по разному, но данные об одном и том же. Если это не так, тогда прошу извинить
там скорее вторая роль может кнопку нажать и посмотреть без маски
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Добрый день!

Внутри агрегата есть сущности.
Создаваться эти сущность тоже должны внутри агрегата или могут быть созданы отдельно и готовыми переданы в конструктор агрегата?
назвал это что-то агрегатом то тогда эти сущности должны быть созданы в процессе создания агрегата. То есть у тебя может быть некая фабрика (в том числе другой агрегат) который все создает но после создания ссылок на "нутро" агрегата оставаться не должно. То есть у тебя не должно быть возможности потом взять сущность которую ты в агрегат положил и поменять там чего в обход корня
источник

DK

Denis Ko in Software Design/Architecture/Zen
Sergey Protko
повторюсь - не важно. Важно как ты будешь идентификатор ресурса на сервере парсить и мэпить на операцию. Из своего опыта скажу что "один экшен и два роута и ифы внутри" это всегда хуже двух отдельных роутов. Но многие фреймворки позволяют тебе query params мэпить на разные роуты, вопрос удобства и читаемости конфигурации.

А тем кто клиент делает в целом пофигу. У них там будет чет типа http.get(\/profiles/${id}/unmasked\`) или `http.get(\/profiles/${id}\`, {unmasked: true})`
Да, я об том же. Покурю доку от фреймворка, думал что низя иметь 2 ендпоинта отличающиеся только параметром. Всех ввел в заблуждение :) спасибо всеа
источник

SP

Sergey Protko in Software Design/Architecture/Zen
по сути жизненный цикл сущностей которые являются частью агрегата должны полностью входить в жизненный цикл этого агрегата
источник