Hi Mario,
My confusion is not really on the methods and how they are implemented in OSLC, but rather how they are implemented with respect to a particular path.
Given /foo/{id}
, per Fielding:
- GET on
/foo
returns allfoo
objects. A set of query string parameters can be used to filter the underlying data set. - GET on
/foo/{id}
returns thefoo
with the givenid
. - DELETE on
/foo/{id}
deletes thefoo
with the givenid
- POST on
/foo
updates afoo
, the underlying semantics (create a new one? update in-place, etc.) are defined by the application, not by the specification. - PUT
/foo/{id}
creates a newfoo
with the givenid
replacing any existing one.
I am specifically confused about why OSLC implements completely different semantics RE: 1, 4, and 5. I’ll unpack:
For 1: OSLC defines Query Capabilities, which are completely independent endpoints for filtering the data set. Why doesn’t OSLC just use query string parameters?
For 4 and 5: Creation Factories could be implemented as POST/PUT at the corresponding /foo/{id}
endpoints, however OSLC says a separate endpoint must be defined to serve these.
Hope that clarifies the confusion!