Size: a a a

Software Design/Architecture/Zen

2021 June 18

SP

Sergey Protko in Software Design/Architecture/Zen
так это может быть был security breach а не "проблема дизайна API"?)
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Мне так и никто не объяснил уже за столько лет как сделать блокировку и разблокировку пользователя по ресту
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Есть апи вообще без гета. Даже получить просто данные - тоже через пост 🤷‍♂
Так и живём)
Что поделаешь - надо же и с ними как-то интегрировать систему...
источник

AS

Alexandr Sakharoff in Software Design/Architecture/Zen
И это совершенно нормально.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Варианты:

PUT /users/{id}/block
PUT /users/{id}/unblock

шоб идемпотентненько

Или что бы красиво

PUT /users/{id}/lock
DELETE /users/{id}/lock

В целом разницы никакой нет. Главное что бы клиент удобно было писать.
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
Второй красивый
источник

П

Павел in Software Design/Architecture/Zen
Тут PATCH и нужен. Но можно и post delete. В  GitHub так звёздочка ставиться
источник

П

Павел in Software Design/Architecture/Zen
Я делаю через patch так как как раз и обновляю одно поле постоянно. Если lock это сущность то ок, если поле то лучше patch я считаю
источник

П

Павел in Software Design/Architecture/Zen
Давайте ещё огня потдам. Получение и создание ордера, должны использовать один dto или разные?
источник

AD

Andrey Dembitskyi in Software Design/Architecture/Zen
могут использовать разные
источник

П

Павел in Software Design/Architecture/Zen
OrderItemDto - для списка ордеров, с парой полей.
OrderDto - заполненный ордер с детальной инфой
NewOrderDto - новый ордер у которого чуть меньше полей или использовать просто OrderDto?
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Почему нет?
источник

П

Павел in Software Design/Architecture/Zen
Почему нет к какой части вопроса относиться? Почему нет могут использовать или почему нет не стоит использовать разные
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Почему не разные?
источник

D

Dmitry in Software Design/Architecture/Zen
Причем тут сущность или поле? Не уловил связь. Мне кажется, Сергей как раз и говорит о том, что рассматривать за ресурсами сущности и поля - это путь в ад)
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Допустим номер заказа генирирует сторонняя апишка, который будет готова только после создания заказа
источник

П

Павел in Software Design/Architecture/Zen
Ну я отвечу почем стоит разные - я не хочу клиенту предоставлять кучу ненужных полей. А вот почему не хочется - избитая тема- дублирование
источник

П

Павел in Software Design/Architecture/Zen
Притом что если вы создание сущность например Item то нужно его создать постом и удалить делитом. Если же ваш лок, это поле в айтеме, то лучше его изменить патчем.
источник

D

Dmitry in Software Design/Architecture/Zen
Нет никакого поля «лок» в айтеме. Есть операция «заблокировать/разблокировать».
источник

П

Павел in Software Design/Architecture/Zen
Ещё дальше пойдем, в ордере есть адресс, это тоже AdressDto. На получение ордера, нужен полный адресс с различными полями, а при создании урезанный. Значит внутренние объекты дто тоже надо свои создавать для каждого случая.
источник