World: r3wp
[!Cheyenne] Discussions about the Cheyenne Web Server
older newer | first last |
BrianH 3-Sep-2008 [2762] | Cool :) |
Dockimbel 3-Sep-2008 [2763x2] | I think that the API approach is more reliable across Windows versions and flavors. |
Robert: you can use get the wrapper for this API function in Cheyenne/misc/win32.r. | |
Graham 23-Sep-2008 [2765] | Doc, what's the appropriate way to process http methods ... such as delete, put, options, get, post ... if one wishes to write an API based upon these? |
BrianH 23-Sep-2008 [2766] | REST for Cheyenne! |
Graham 23-Sep-2008 [2767] | probably past his bed time now .... |
BrianH 23-Sep-2008 [2768] | He'll read later, and in the meanwhile you can read the Cheyenne docs, samples and source. |
Graham 23-Sep-2008 [2769x3] | I've only ever used RSP with Cheyenne. |
though I did build a smtp server using Uniserve once .... | |
Prior to today, the only thing I knew about REST was that it existed. Now, ... I'm thinking that it might just be the way to go to provide web services for non REBOL clients. | |
BrianH 23-Sep-2008 [2772] | The trick is that many HTTP clients only support GET and POST. |
Graham 23-Sep-2008 [2773x2] | which is why I was hacking the http protocol recently to add the others |
Presumably javascript supports all http verbs? | |
BrianH 23-Sep-2008 [2775x2] | I wouldn't presume that - test first. |
Or look it up. | |
Graham 23-Sep-2008 [2777] | is this the way to support all clients ? from cellphones, to pdas and then full featured client browsers |
shadwolf 23-Sep-2008 [2778] | well i only used get and post so i can't tell the others options |
BrianH 23-Sep-2008 [2779x4] | If you only use get and post, you can't do REST - it requires the others. |
Handheld devices may be another matter. Many of them have poor JavaScript support, and most don't support XMLHTTP. | |
Those might require old school HTML get/post interfaces. | |
Which can also be implemented as Cheyenne proxies to your same LNS service. | |
Graham 23-Sep-2008 [2783x2] | how would one use cheyenne to load/balancing redistributing the resources |
Cheyenne docs look a bit sparse ... the wiki sections are all looking for an author except for RSP. http://cheyenne-server.org/wiki/Main/HomePage | |
Dockimbel 24-Sep-2008 [2785x2] | Docs: I put the wiki online mainly because several peoples asked me for one so they can contribute by documenting Cheyenne... |
REST: The starting point is to authorize all HTTP methods by adding them in mod-static/method-support callback. Then, if Cheyenne doesn't choke on them (should be treated by default as a GET, but untested), you can write a dispatching RSP page that will basically do a : switch request/method [GET [...] POST [...] DELETE [...] ...]. The upcoming v0.9.19 release will bring a URL aliasing feature that will allow nicer and more RESTful URL. | |
Graham 24-Sep-2008 [2787] | so people asked for a wiki and then don't contribute? |
Dockimbel 24-Sep-2008 [2788] | Load balancing: if you're using RSP, you got it for free as each RSP is executed in its own separated process. |
Graham 24-Sep-2008 [2789x2] | I think Brian was talking about using Cheyenne to do load/balancing for another application |
as a proxy | |
Dockimbel 24-Sep-2008 [2791] | maybe the one that asked are now too busy...anyway, the wiki was a good testbed for enhanced PHP support in Cheyenne. |
Graham 24-Sep-2008 [2792] | method-support: func [req][ if not find [HEAD GET POST PUT] req/in/method [ req/out/code: 405 return true ] none ] |
Dockimbel 24-Sep-2008 [2793] | Proxy: it can be done but requires a little more work, like building your own mod-something and implementing an async client protocol in Uniserve (unless you want to use the built-in HTTP async client protocol). |
Graham 24-Sep-2008 [2794] | missing DELETE, OPTIONS, and FOO |
Dockimbel 24-Sep-2008 [2795] | just extend the method block list with whatever method you need |
Graham 24-Sep-2008 [2796] | so, how would one determine if it's a REST request or just a ordinary other request? |
Dockimbel 24-Sep-2008 [2797x2] | the restriction on method was done mainly for security reasons (no appropriate default handler for other methods except these 4). PUT is treated by default like POST. |
REST = HTTP request, so it depends on which handler will respond to the HTTP request. If your URL point to a .rsp => RSP handler. | |
Graham 24-Sep-2008 [2799x2] | Ok. |
So, this is very doable then? | |
Dockimbel 24-Sep-2008 [2801x2] | So your REST URLs have to point to a .rsp resource. |
Well, in theory, yes :-) | |
Graham 24-Sep-2008 [2803x2] | I see that Deki uses query parameters on their PUT methods |
is that standard? | |
Dockimbel 24-Sep-2008 [2805] | If you need the HTTP client for Uniserve, just let me know, I have a much more recent unreleased version that should work better than the old one in Uniserve 0.9.9. |
Graham 24-Sep-2008 [2806] | sure .. |
Dockimbel 24-Sep-2008 [2807] | I guess that the HTTP method and URI query parameters are not related. |
Graham 24-Sep-2008 [2808x2] | what I read is that parameters are supposed to be sent as custom headers with PUT |
but I guess that's harder to process | |
Dockimbel 24-Sep-2008 [2810] | from RSP, you just have to look in request/headers to get custom headers. |
Graham 24-Sep-2008 [2811] | what do you mean the REST URLs have to point to a rsp resource? |
older newer | first last |