>> To say the truth, I'd even prohibit use of DELETE to actually delete
>> smth. Deletion is way dangerous operation. Especially when cascading
>> is on.
>>
>
> While I agree that deletion is a dangerous operation, how dangerous
> depending on the data being deleted, I disagree on prohibiting it. In
> fact, I believe it is saner to use that verb over POST or gods forbid --
> GET (which is, unfortunately, not uncommon)!
>
> Why? Because it is a distinct verb. No doubt about its purpose. The
> alternative is to pass a flag through POST which can lead to sloppy
> design especially if POST accepts also creation and/or alteration of
> data. Complex controller code only increases probability of mistake. I
> don't even want to begin a rant on delete via GET.
>

I don't mind the verb. The statement was "I'd forbid to delete
anything. Better is to just lay the object aside".

> You mention cascading. I assume foreign key cascading in the db? One of
> the mistakes when doing REST is to consider the transactions in the
> scope or sense of a database transaction.

When one operation (paying a bill, say, PUT <>(amount=1)) depend on
another (counting the saldo, GET <>/saldo), the whole scheme becomes
rather synchronous -- thus transactions -- and they heavily resemble
database's ones.

> They are not the same.

Definitely. Databases are optional.

> However, delete should not be dangerous if you know what you're doing.
> Mapping the action to the DELETE verb only facilitates the attention:
> there's no doubt about what the action should do, so you proceed with
> safeguards. You don't do IFs and IFNOts, checking extra flags to see
> what the action might additionally mean (unless it is to represent a
> condition of delete, but nothing else).
>
> Additionally, having a "deletion resource" or queue, or marking subject
> for deletion before actual deletion is something that can be perfectly
> handled by stored procedures and table/row triggers: no soup for you if
> the flag/deletion resource is missing! That way you can't even
> "accidentally" go to the SQL prompt and to DELETE whatever FROM
> wherever, because the trigger would prevent deletion without proper
> flag/resource set. Gods forbid that you forget a where clause. :)
>

Right. But real applications rarely do delete something. Besides, the
real world doesn't cascade.

--
Vladimir

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en.

Reply via email to