Reworded Content-Type description.

master
Nicolas Favre-Felix 14 years ago
parent 469e51608b
commit 75cbbc2064

@ -17,17 +17,15 @@ curl -d "GET/hello" http://127.0.0.1:7379/
# Features
* GET and POST are supported.
* JSON output by default, optional JSONP parameter.
* Raw Redis 2.0 protocol output with `?format=raw`
* JSON output by default, optional JSONP parameter (`?jsonp=myFunction`).
* Raw Redis 2.0 protocol output with `.raw` suffix
* HTTP 1.1 pipelining (50,000 http requests per second on a desktop Linux machine.)
* Connects to Redis using a TCP or UNIX socket.
* Restricted commands by IP range (CIDR subnet + mask) or HTTP Basic Auth, returning 403 errors.
* Possible Redis authentication in the config file.
* Pub/Sub using `Transfer-Encoding: chunked`, works with JSONP as well. Webdis can be used as a Comet server.
* Drop privileges on startup.
* For `GET` commands:
* MIME type in a second key with `/GET/k?typeKey=type-k`. This will transform the `GET` request into `MGET` and fetch both `k` and `type-k`. If `type-k` is a string, it will be used as Content-Type in the response. If the key doesn't exist or isn't a string, `binary/octet-stream` is used instead.
* Custom MIME type with `?type=text/plain` (or any other MIME type).
* Custom Content-Type using a pre-defined file extension.
* URL-encoded parameters for binary data or slashes. For instance, `%2f` is decoded as `/` but not used as a command separator.
# Ideas, TODO...
@ -119,20 +117,20 @@ myCustomFunction({"TYPE":[true,"string"]})
</pre>
# RAW output
This is the raw output of Redis; enable it with `?format=raw`.
This is the raw output of Redis; enable it with the `.raw` suffix.
<pre>
// string
$ curl http://127.0.0.1:7379/GET/z?format=raw
$ curl http://127.0.0.1:7379/GET/z.raw
$5
hello
// number
curl http://127.0.0.1:7379/INCR/a?format=raw
curl http://127.0.0.1:7379/INCR/a.raw
:2
// list
$ curl http://127.0.0.1:7379/LRANGE/x/0/-1?format=raw
$ curl http://127.0.0.1:7379/LRANGE/x/0/-1?.raw
*2
$3
abc
@ -140,22 +138,24 @@ $3
def
// status
$ curl http://127.0.0.1:7379/TYPE/y?format=raw
$ curl http://127.0.0.1:7379/TYPE/y.raw
+zset
// error, which is basically a status
$ curl http://127.0.0.1:7379/MAKE-ME-COFFEE?format=raw
$ curl http://127.0.0.1:7379/MAKE-ME-COFFEE.raw
-ERR unknown command 'MAKE-ME-COFFEE'
</pre>
# Custom content-type
Webdis can serve `GET` requests with a custom content-type. There are two ways of doing this; the content-type can be in a key that is fetched with the content, or given as a query string parameter.
**Content-Type in parameter:**
Several content-types are available:
* `.json` for `application/json` (this is the default Content-Type).
* `.txt` for `text/plain`
* `.html` for `text/html`
* `.png` for `image/png`
<pre>
curl -v "http://127.0.0.1:7379/GET/hello.html?type=text/html"
curl -v "http://127.0.0.1:7379/GET/hello.html" # the key is “hello” here, not “hello.html”
[...]
&lt; HTTP/1.1 200 OK
&lt; Content-Type: text/html
@ -168,24 +168,3 @@ curl -v "http://127.0.0.1:7379/GET/hello.html?type=text/html"
&lt;/html&gt;
</pre>
**Content-Type in a separate key:**
<pre>
curl "http://127.0.0.1:7379/SET/hello.type/text%2fhtml"
{"SET":[true,"OK"]}
curl "http://127.0.0.1:7379/GET/hello.type"
{"GET":"text/html"}
curl -v "http://127.0.0.1:7379/GET/hello.html?typeKey=hello.type"
[...]
&lt; HTTP/1.1 200 OK
&lt; Content-Type: text/html
&lt; Date: Mon, 03 Jan 2011 20:56:43 GMT
&lt; Content-Length: 137
&lt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
...
&lt;/html&gt;
</pre>

Loading…
Cancel
Save