greptilian logo

IRC log for #rest, 2015-05-01

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:12 shrink0r_ joined #rest
00:58 arbelos joined #rest
01:21 warehouse13 joined #rest
02:18 shrink0r joined #rest
02:28 baweaver joined #rest
03:00 spaceone hm
03:00 spaceone i can't instruct a server that it should not use chunked transfer encoding
03:01 spaceone if i use HTTP/1.0 apache just strips out the whole body
03:01 spaceone ...
04:14 daxim joined #rest
05:02 shrink0r_ joined #rest
05:04 shrink0r joined #rest
05:44 adaro joined #rest
06:53 Left_Turn joined #rest
07:29 rosstuck joined #rest
08:59 warehouse13 joined #rest
09:57 mezod joined #rest
10:19 pdurbin we were looking at that chunked stuff recently
10:28 trygvis spaceone: a HTTP/1.1 client is expected to understand chunked transfer encoding
10:38 spaceone trygvis: yes, i know
10:38 spaceone that's why i switched to HTTP/1.0
10:38 spaceone (i just want to test my code also without T-E-…)
10:38 spaceone but seems apache dropped HTTP/1.0 support
10:45 trygvis hm, can't you request a resource with a known length? Then it will not use chunked but give you a C-L and a response similar to what 1.0 would
10:46 trygvis I doubt httpd has dropped 1.0 support
10:47 trygvis it seems that you can force 1.0 with downgrade-1.0; http://httpd.apache.org/docs/2.4/env.html
11:55 pdurbin spaceone: so you have opinions about http://restcookbook.com ?
11:56 pdurbin (according to http://irclogs.shortcircuit.net.au/%23circuits/2015-05-01.log.html#t10:51:13 anyway)
11:57 spaceone trygvis: i don't control the server part here.. it is a PHP script which always does TE=chunked
11:58 spaceone pdurbin: well, it is a starting point ;)
11:58 trygvis oh, ok. then bad php!
11:58 pdurbin spaceone: if you want you can contribute to this new wiki: https://trygvis.io/rest-wiki
11:58 spaceone pdurbin: yes
11:59 pdurbin trygvis: we should probably make it clear that a pull request to https://github.com/trygvis/rest-wiki is the way to do so
11:59 spaceone pdurbin: i don't see any pages there
11:59 pdurbin I know to click "History" to get there but it's non obvious.
12:00 pdurbin spaceone: at the moment only the homepage has content: https://github.com/trygvis/rest-wiki/blob/master/index.mdwn
12:00 pdurbin greenfield!
12:00 spaceone okay
13:08 angular_mike joined #rest
14:10 foist joined #rest
14:18 trygvis I just added some notes on contributing and collection+json as a hypermedia
14:20 trygvis would like to add notes on more hypermedia, I think that would be nice to show to people
15:40 baweaver joined #rest
15:43 fumanchu joined #rest
15:51 pdurbin trygvis: this is fanastic. good work
17:21 ModusPwnens joined #rest
17:21 sfisque joined #rest
17:21 ModusPwnens How do you model a property of a rest resource that is too expensive to compute every time you get it?
17:22 ModusPwnens do you just require people to make a GET to /resource/{id}/expensive_to_compute_attr?
17:25 fumanchu yes, make a new resource for just that attribute, and cache the heck out of it if you can
17:29 whartung when is it supposed to be computed?
17:30 sfisque aye, just tune the expiry so that you recalc often enough to prevent stale info
17:37 ModusPwnens We can't do cute caching stuff like that because we never know when it needs updating. It's updated by other processes whenever a transaction is created
17:37 ModusPwnens and client's don't always need to see that attribute when they get the resource, so we want to force them to explicitly get it
17:38 ModusPwnens So, how do we reference this computed object in the representation of the resource returned to the client? We have to do that, to make it discoverable, right?
17:41 navls joined #rest
17:41 whartung if it's so expensive to create, then you should create it when it changes, not when it's requested.
17:41 whartung so that means some kind of change logic to detect updates, or posting update events someplace to perform the update
17:42 whartung meanwhile, everyone else simply sees a static resource that changes occasionally, and has the caching headers set properly (minimally honor the last change data/etag)
17:43 navls Should I return the name of the object in the object? For example if the target was /cars/honda, should I include {"make":"honda", ...} in the response? It seems redundant but allows for the object to be passed around as a complete unit
17:44 asdf` navls, sure; don't force the client to try and parse your urls for data
17:44 navls asdf`: I agree, thanks for the advice
17:52 ModusPwnens whartung: That also doesn't work because it changes far more frequently than it's requested. The modifications that change it would also increase the latency of the request, which is not desirable
17:56 ModusPwnens whartung: We also can't have an async process checking for updates due to the requirements of our system. We can't have some resources ever in a pending state, so every change to them needs to be syncronous
18:03 whartung then your original request to the resource is going to suck. And you have to accept that. When the request is made, it checks whether it's rendered version is "dirty", if it is, it recreates it right then, and sends it to the client.
18:03 whartung but what I would suggest instead
18:03 whartung is that you do use an async process
18:03 whartung that keeps the reosource up to date
18:03 whartung the resource is never in an "interim" state
18:03 whartung since the rendered resources are ALWAYS stale (it's just truth).
18:04 whartung if a resource is being re-created while someone else is asking for it, they simply get the older version. When the new one is done, it replaces it.
18:04 whartung that's just a simple race condition.
18:04 whartung and it's no different semantically from them asking for the cached version while the data behind it is being updated,
18:04 whartung the difference is the window of exposure
18:04 whartung if you don't mind have the requesters wait for it, then simply recreate it on the fly and cache it.
18:05 whartung if you do care about request response time, then you have to compromise somewhere, because the wait to create the update resource is non-negotiable.
18:27 fumanchu_ joined #rest
18:39 fumanchu joined #rest
18:56 shrink0r joined #rest
19:00 trygvis pdurbin: thanks
19:27 pdurbin trygvis: keep up the good work
19:35 trygvis :)
19:57 Left_Turn joined #rest
20:37 sfisque joined #rest
20:40 adaro joined #rest
21:30 arbelos joined #rest
21:34 shrink0r_ joined #rest
21:35 shrink0r joined #rest

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

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