On 16/09/2015 14:04, Sergey Beryozkin wrote:
Hi Francesco, All

Please see comments below
On 16/09/15 07:34, Francesco Chicchiriccò wrote:
Hi all,
I have just opened SYNCOPE-694 and SYNCOPE-695 for providing further
enhancements to REST interface: the former for (long-overdue) turning
POST-based updates into more compliant PATCH and PUT

Updating individual resources with POST is indeed not very compliant, thought I guess if it is a case of adding a new collection member (ex, adding new user to a collection of users) then one may qualify that as a process of updating the collection, while adding a new collection resource. I'd probably keep POST for that case but I'm presuming the main idea is to switch to PATCH/PUT when updating the existing non-collection resource.

Correct: we're still using POST for create new users (groups, any objects).

One point about PATCH - it is obviously more effective to do a partial update (ex, 1 individual resource attribute) then the complete update typically done with PUT when only one attribute has changed, with the rest keeping the original values.

However I'm not sure if using PUT for partial updates is wrong. The partial update is always application specific, but overall it is still an update. Similarly, would it be wrong to use PATCH for a complete update instead of PUT ? I'm not sure either.

I'm not discouraging you to use PATCH :-). I know quite a few users are interested in marking the finer-grained updates with PATCH. Only please be aware that not all client support PATCH well, particularly HttpUrlConnection-based, though as it happens we can have PATCH supported with HttpUrlConnection in CXF now - but only due to some reflection magic Dan did.

I also know from my own experience that PATCH is more troublesome, but it's also true that it has been set as standard since quite a long time, and this should sets expectations for it to eventually succeed.

Perhaps in the short term it makes sense to support both PUT and PATCH for updates.

Agree: and it is an enhancement anyway since currently we only provide POST for updates (for users, groups and any objects, the remaining services are already on PUT).

and the latter,
inspired by OData, for providing attribute-based operations.

Sure - sounds like a great idea, may be it makes sense to keep path segments uncapitalized ('plain' vs 'PLAIN', etc)

The capitalized stuff comes from the SchemaType enum [1] and is already used in different resources throughout all the Syncope services.
Do you think it would make sense to lowercase it?

Regards.

[1] https://github.com/apache/syncope/blob/master/common/lib/src/main/java/org/apache/syncope/common/lib/types/SchemaType.java

--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Involved at The Apache Software Foundation:
member, Syncope PMC chair, Cocoon PMC, Olingo PMC
http://people.apache.org/~ilgrosso/


Reply via email to