Size: a a a

2019 June 26

RI

Ruslan Ibragimov in Kotlin JVM
Итого:

индепотентность POST в спеке HTTP не определена
создание новой сущности можно сделать индепотентным при наличии уникального индентификтора

под индепотентностью тут понимается возможность отправить множество одинаковых запросов на создание (POST), при этом состояние не изменится после первого применения (в вике:  Idempotence is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.)
источник

d

dima in Kotlin JVM
Ruslan Ibragimov
Итого:

индепотентность POST в спеке HTTP не определена
создание новой сущности можно сделать индепотентным при наличии уникального индентификтора

под индепотентностью тут понимается возможность отправить множество одинаковых запросов на создание (POST), при этом состояние не изменится после первого применения (в вике:  Idempotence is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.)
Но к слову, определены идемпотентные методы, указано, что пост создавался для фабричных методов, а если у тебя именно такой и ты используешь пост, то у тебя он должен быть не идемпотентным, краевой пример выше нарушает crud, rest  и не является фабричным.
источник

VP

Vladimir Petrakovich in Kotlin JVM
dima
Но к слову, определены идемпотентные методы, указано, что пост создавался для фабричных методов, а если у тебя именно такой и ты используешь пост, то у тебя он должен быть не идемпотентным, краевой пример выше нарушает crud, rest  и не является фабричным.
CRUD - это спека такая?
источник

☠🇷

☠️ hex 🇷🇺🐍 in Kotlin JVM
create read update delete
источник

d

dima in Kotlin JVM
Vladimir Petrakovich
CRUD - это спека такая?
Соглашение
источник

VP

Vladimir Petrakovich in Kotlin JVM
dima
Соглашение
Соглашение, что каждый POST-запрос должен создавать новый ресурс?
источник

d

dima in Kotlin JVM
Vladimir Petrakovich
Соглашение, что каждый POST-запрос должен создавать новый ресурс?
Скорее, что создание и обновление раздельны
источник

VP

Vladimir Petrakovich in Kotlin JVM
dima
Скорее, что создание и обновление раздельны
Хороший подход. Только я не понял, как его нарушает id с клиента?
Или вы про "POST и PUT - одно и то же"?
источник

d

dima in Kotlin JVM
Vladimir Petrakovich
Хороший подход. Только я не понял, как его нарушает id с клиента?
Или вы про "POST и PUT - одно и то же"?
То что одно и тоже
источник

d

dima in Kotlin JVM
А ещё в примере Руслана нет фабрики, действие однократно.
источник

d

dima in Kotlin JVM
Ладно, я считаю, разобрались.
источник

AE

Alexandr Emelyanov in Kotlin JVM
Vladimir Petrakovich
Если есть возможность обнаружить дубликат запроса - это уже поведение другое?
Да
источник

VP

Vladimir Petrakovich in Kotlin JVM
По мне так это расширение. Но я делаю иначе - id опциональным параметром, а не прям в пути ресурса.
источник

AE

Alexandr Emelyanov in Kotlin JVM
Vladimir Petrakovich
По мне так это расширение. Но я делаю иначе - id опциональным параметром, а не прям в пути ресурса.
Должен быть post на ресурс без id, в результате возвращается сущность с ид. В случае put он идёт на URL с ид
источник

AO

Alexey Otts in Kotlin JVM
Vladimir Petrakovich
@eld0727 судя по моим экспериментам, всё таки там graceful - соединения не принимаются, но существующие запросы отрабатывают.
Ещё бы без запросов не было бессмысленного ожидания...
А ну это да, он дожидается если выставить большой период, проблема в том, что не хочется ждать условную минуту, хочется завершиться как можно быстрее
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Otts
А ну это да, он дожидается если выставить большой период, проблема в том, что не хочется ждать условную минуту, хочется завершиться как можно быстрее
Согласен, потому у меня там 0 стоит. Я бы issue создал.
источник

AO

Alexey Otts in Kotlin JVM
Vladimir Petrakovich
Согласен, потому у меня там 0 стоит. Я бы issue создал.
создай 😏
источник

VP

Vladimir Petrakovich in Kotlin JVM
Alexey Otts
создай 😏
Ок, если руки дойдут
источник

VP

Vladimir Petrakovich in Kotlin JVM
Но после https://github.com/ktorio/ktor/issues/1015 чёт не верится, что это пофиксят 😒
Очень похоже на ещё одну неоднозначную задумку
источник

AO

Alexey Otts in Kotlin JVM
О да, с этой "фичей" тоже довелось разгребаться
источник