greptilian logo

IRC log for #rest, 2015-01-06

https://trygvis.io/rest-wiki/

| Channels | #rest index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

All times shown according to UTC.

Time S Nick Message
00:34 MLMitch joined #rest
01:30 lemur joined #rest
02:29 MLMitch joined #rest
02:35 lemur joined #rest
02:36 MLMitch joined #rest
02:43 DrCode joined #rest
02:57 mezod joined #rest
03:48 MLMitch joined #rest
03:54 tr3onlin_ joined #rest
04:04 MLMitch joined #rest
04:41 lemur joined #rest
05:11 tr3online joined #rest
05:16 tr3onlin_ joined #rest
05:37 fumanchu joined #rest
05:58 proteusguy joined #rest
07:34 rosstuck joined #rest
07:36 MLMitch joined #rest
07:52 lemur joined #rest
08:47 tr3online joined #rest
09:16 graste joined #rest
09:27 tr3online joined #rest
09:29 tr3online joined #rest
09:39 proteusguy joined #rest
09:49 martinfilliau joined #rest
10:07 marcoslamuria joined #rest
10:35 proteusguy joined #rest
11:15 tr3online joined #rest
11:31 proteusguy joined #rest
11:52 sulky joined #rest
11:56 Left_Turn joined #rest
12:31 sulky joined #rest
12:33 BrunoC joined #rest
12:40 Left_Turn joined #rest
12:42 BrunoC hi all
12:49 trygvis hello
13:16 tr3online joined #rest
13:48 nkoza joined #rest
14:35 MLMitch joined #rest
14:53 vlakarados joined #rest
15:08 jackalista joined #rest
15:18 tr3online joined #rest
15:18 vlakarados_ joined #rest
15:21 saml joined #rest
15:46 BrunoC what do you think about json patch? (rfc6902)
15:46 BrunoC Do you know any public API using it?
15:48 trygvis nope
15:48 trygvis I doubt there are many services that want to process changes in that kind of format
15:49 trygvis adoption of the patch mentality will take along time if it ever catches on
15:50 BrunoC Yes, I'm checking github api and they are using it as I'm at the moment for internal services
15:50 BrunoC updating resources with partial JSON, instead of operations for the update
15:51 BrunoC rfc6902 is ugly
15:52 BrunoC but I found it flexible
15:53 trygvis they are? hm
15:54 trygvis where are they using it?
15:54 trygvis I think the rfc6902 format itself is quite good, much better than the other proposed solutions at least
16:16 saml how can i do transaction?  multiple PUTs or POSTs should happen at once or none should happen
16:16 trygvis you can't. it's a feature
16:16 saml yah
16:17 saml what if...  POST /transaction   gives new transaction id, /transaction/1    .  and do POST /article/1?transaction=/transaction/1  .... etc
16:18 saml and do POST /transaction/1   for commit
16:18 saml clients can forget to commit. stale transactions can be cleaned up with DELETE /transaction/1
16:19 trygvis yep, that's the way to do it
16:20 trygvis except that you should keep on modifying the same resource, not send stuff that should be a part of the body as query params
16:20 trygvis but you know that :)
16:20 saml ah right
16:21 tr3online joined #rest
16:21 trygvis wait, your POST is strange
16:22 trygvis I'm not sure what you wanted to do there
16:22 saml i want to update multiple articles. at once
16:22 trygvis the core of the idea is to make the transaction a resource itself which you can operate on
16:23 saml POST /articles?ids=1,2,3,4,5
16:48 BrunoC I would use POST, but instead of articles, I would use something like POST /articles/_bulk and have a resource such as {operation} {id} {document}
16:48 BrunoC trygvis, github api:https://developer.github.com/v3/
16:48 BrunoC PATCHUsed for updating resources with partial JSON data. For instance, an Issue resource has title and body attributes. A PATCH request may accept one or more of the attributes to update the resource. PATCH is a relatively new and uncommon HTTP verb, so resource endpoints also accept POST requests.
16:49 trygvis BrunoC: that's not rfc6209, that is the PATCH http verb
16:49 BrunoC I know
16:49 trygvis http://tools.ietf.org/html/rfc5789
16:49 BrunoC BrunoC> updating resources with partial JSON, instead of operations for the update
16:50 trygvis I was confused by "they are using it"
16:51 BrunoC I were saying that they use the same approach I'm using internally.
16:51 BrunoC sorry
16:51 BrunoC yeah
16:52 trygvis in terms of REST the github stuff is mostly crap from what I've seen
16:52 BrunoC Do you have any suggestion?
16:53 BrunoC a better rest example
17:08 jackalista joined #rest
17:08 tr3online joined #rest
17:10 fumanchu tooting my own horn, but I have yet to find a PATCH format better than
17:11 fumanchu Shoji https://bitbucket.org/fumanchu/shoji/src/984733415cf8e9029f9dfd32fb14eccd30a8897b/spec.txt?at=default#cl-32
17:11 fumanchu (line 800ff)
17:14 fumanchu every ad-hoc JSON PATCH implementation I've seen really wants the PATCH mime-type to be the same as GET/PUT
17:14 fumanchu Shoji is the only one I've seen where that's actually true
17:16 BrunoC RFC5789?
17:18 BrunoC it's like github is using patch, right?
17:18 fumanchu yes, very similar
17:18 fumanchu only actually constrained by the media type
17:21 BrunoC has it been adopted by the community?
17:21 fumanchu no. I am not a community organizer.
17:23 fumanchu the community appears to be working on a solution where the PATCH format is imperative code dressed up to look declarative
17:23 whartung I thought the patch formats were, basically, patches…
17:23 whartung i.e. trussed up diffs
17:23 fumanchu they are. I think that's a fundamental mistake
17:25 fumanchu they are trussed up diffs because they want to be able to express a diff of an arbitrarily complex tree structure
17:25 whartung right
17:25 fumanchu I find it's *so* much simpler to constrain the structure
17:25 whartung they want to mechanically apply the diff to "anything"
17:26 trygvis the generic patch format will obviously need to patch "anything"
17:26 trygvis formats
17:27 fumanchu Shoji already constrains the structure to encourage data boundaries that foster scalability. Because it's already constrained in that way, the PATCH format just "falls out" in a handful of paragraphs
17:27 whartung fumanchu: you want something first class within the hypermedia format itself? so that the resource can represent it's data along with changes in the same media type?
17:28 fumanchu yes. doesn't everybody?
17:28 whartung apparently not :)
17:28 fumanchu as I noted above, that seems to be what most ad-hoc solutions do in the wild
17:28 fumanchu regardless of IETF WG's ;)
17:29 whartung well, I think most ad hoc ones may use a similiar format, but they change the semantics in order to empower patch. I don't really know, I haven't looked at any in detail.
17:34 whartung here's a quick nuggest for conversation, glancing at the Shoji spec above. The spec says it's "Shoji 2.0", the media-type is not versioned, nor is version apparently an element of the payload. Do you think it's suitable to have a payload with an OPTIONAL version element, and if the element does not exist within the payload, the system can "assume" that it's the "latest" version?
17:35 fumanchu only in small deployments (like Shoji currently is)
17:35 whartung ok
17:36 BrunoC Do you know if patch is the standard adopted for partial updates? And how about the json patch?
17:37 fumanchu patch is recommended for partial updates, yes. you can fake it with POST, but then the semantics are ad-hoc
17:37 fumanchu PATCH allows you to have specified semantics with a much wider scope
17:37 fumanchu everyone using that media type obeys the same semantics
17:38 fumanchu (I dunno, maybe you could make a new media type for partial updates that you send with POST. but nobody does)
17:41 fumanchu that's kind of the nub of my beef, now that I think about it
17:41 fumanchu if you're going to invent a new media type just for PATCH, then why did we need PATCH in the first place?
17:42 whartung does PATCH have different semantics than POST?
17:42 whartung or just a different intent
17:42 fumanchu a more narrow intent
17:43 fumanchu the rationale of PATCH is kind of thin ;)
17:43 fumanchu OST is already used but without broad interoperability (for one, there is no standard way to discover patch format support).
17:43 fumanchu P*
17:44 whartung how would you discover it with PATCH?
17:44 BrunoC OST?
17:45 BrunoC Well, I think PATCH is very useful for partial updates
17:46 whartung the question boils down to how necessary are specializations of POST (or GET for that matter)
17:46 BrunoC I'm looking at some APIs and what I have found is
17:47 BrunoC some use PUT to partial updates and just ignore the readonly properties
17:47 BrunoC others use actions on the URI (ugly, ugly)
17:48 BrunoC using POST
17:48 BrunoC I don't remember of any using POST for partial updates
17:50 fumanchu https://developers.google.com/admin-sdk/directory/v1/guides/performance#patch
17:51 fumanchu boy that looks like a Shoji PATCH. I oughtta ask for a job ;)
17:52 whartung nah, they'll just take your work and corrupt it. :)
17:52 fumanchu yeah. I'd never allow Shoji to grow ?fields=...
17:52 fumanchu boom goes your caching
17:59 BrunoC Why don't you like partial response?
18:01 BrunoC Also, can you give me an example of a PATCH request using Shoji? I'm having a hard time trying to understand the difference between that and RFC5789
18:02 fumanchu at the protocol level, there's no such thing as a "partial response". there's only a response and another response. duplicating the same data across multiple responses makes cache synchronization, which is already a hard problem, insurmountable.
18:03 fumanchu which one do I PUT to or PATCH? and then how do I invalidate all the other responses with that same data?
18:03 BrunoC yes, but imagine that you know what changed and you only wants that information to update your local cache
18:03 BrunoC I think partial response are useful in some cases
18:04 BrunoC or another example
18:04 BrunoC imagine a checkout service
18:04 BrunoC and an ecommerce application
18:05 BrunoC you might have a header with the total amount and total quantity
18:05 BrunoC you know that you need to request the service every time (lets imagine that you do)
18:05 tr3online joined #rest
18:06 BrunoC for performance, you might find useful partial response with the total amount and total quantity
18:07 trygvis you always work with full responses, if you want summaries/aggregates you'll find those as separate resources
18:07 BrunoC like /cart/1/summary
18:07 BrunoC ?
18:08 fumanchu trygvis: yes. Shoji has formalized that idea with separate Entity and View documents
18:08 trygvis BrunoC: I don't care about its URL as long as discovered
18:20 BrunoC just an example
18:21 BrunoC that's an option, yeah, pretty cool actually for this scenario
18:21 BrunoC so, e.g. /cart/1 will return all the cart information where the summary will have the link to /cart/1/summary to be used on the header
18:22 BrunoC But, I may have a lot of fields in the summary that I don't need and maybe a partial response would help me
18:27 BrunoC well, I'm having a good talk here, but I've to go, cya and thanks ;)
18:28 fumanchu have fun
18:29 mezod Hi, is there any standard on if PUT requests should always send full representations or only the modified fields?
18:32 fumanchu yes. http://tools.ietf.org/html/rfc7231#section-4.3.4 was specifically revised from RFC 2616 to make it clear that PUT should not be partial.
19:07 DrCode joined #rest
19:14 tr3online joined #rest
19:32 mezod_ joined #rest
19:46 dreamdust mezod: Use PATCH to send a… patch. If you're using JSON use JSON-Patch.
19:49 MLMitch joined #rest
20:47 ruibritopt joined #rest
20:48 marcoslamuria joined #rest
21:08 marcoslamuria joined #rest
22:14 ralphschindler joined #rest
22:21 jackalista joined #rest
22:53 BrunoC joined #rest
23:21 locks joined #rest
23:21 ruibritopt joined #rest
23:22 mezod_ joined #rest
23:22 CentaurWarchief joined #rest
23:22 trygvis joined #rest
23:22 ekroon joined #rest
23:22 zama joined #rest
23:23 asm89 joined #rest
23:27 riddle joined #rest
23:34 marcoslamuria joined #rest
23:52 DrCode joined #rest

| Channels | #rest index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

https://trygvis.io/rest-wiki/