kopia lustrzana https://github.com/c9/core
69 wiersze
1.7 KiB
Markdown
69 wiersze
1.7 KiB
Markdown
|
# HTTP Adapter
|
||
|
|
||
|
This module is a connect/stack middleware module that wraps a vfs instance and
|
||
|
serves it via a HTTP RESTful interface.
|
||
|
|
||
|
The module is a setup function that creates a middleware instance.
|
||
|
|
||
|
```js
|
||
|
var root = "http://localhost:8080/rest/";
|
||
|
|
||
|
var vfs = require('vfs-local')({
|
||
|
root: process.cwd(),
|
||
|
httpRoot: root,
|
||
|
});
|
||
|
|
||
|
require('http').createServer(require('stack')(
|
||
|
require('vfs-http-adapter')("/rest/", vfs)
|
||
|
)).listen(8080);
|
||
|
|
||
|
console.log("RESTful interface at " + root);
|
||
|
```
|
||
|
|
||
|
## `HEAD /any/path`
|
||
|
|
||
|
All HEAD requests are converted to GET requests internally and act identical,
|
||
|
except there is an internal flag in the vfs layer telling it to not stream the body.
|
||
|
|
||
|
## `GET /path/to/file`
|
||
|
|
||
|
Serve a file to the client as a stream. Supports etags and range requests.
|
||
|
|
||
|
## `GET /directory/path/with/slash/`
|
||
|
|
||
|
Serve a directory listing as a JSON document.
|
||
|
|
||
|
This is served as a streaming json document with a weak etag (since the order
|
||
|
of the entries is not defined.) It supports conditional GET requests
|
||
|
|
||
|
See `vfs.readdir` below for the format of the JSON.
|
||
|
|
||
|
## `PUT /path/to/file`
|
||
|
|
||
|
Recieve a file from the client and save it to the vfs. The file body is streamed.
|
||
|
|
||
|
## `PUT /directory/path/with/slash/`
|
||
|
|
||
|
Create a directory
|
||
|
|
||
|
## `DELETE /path/to/file`
|
||
|
|
||
|
Delete a file.
|
||
|
|
||
|
## `DELETE /directory/path/with/slash/`
|
||
|
|
||
|
Delete a directory (not recursive)
|
||
|
|
||
|
|
||
|
## `POST /path/to/target`
|
||
|
|
||
|
POST is used for various adhoc commands that are useful but don't fit well into
|
||
|
the RESTful paradigm. The client sends a JSON body containing the request information.
|
||
|
|
||
|
Currently this includes:
|
||
|
|
||
|
- {"renameFrom": from} - rename a file from `from` to `target`.
|
||
|
- {"copyFrom": from} - copy a file from `from` to `target`.
|
||
|
- {"linkTo": data} - create a symlink at `target` containing `data`.
|
||
|
|