npx-compatible REST API for simple file i/o over HTTP.
Run npx io-serve
inside any directory -- now you have a server running at http://localhost:33333
.
Verb | Action |
---|---|
GET | Returns the corresponding file descending from the current working directory |
HEAD | Same as GET, but returns no file data, only headers and status code. |
PUT | Write the request body to the corresponding file. Directories are automatically created. |
PATCH | Append the request body to the corresponding file. Directories are automatically created. |
DELETE | Delete the corresponding file or directory. |
POST | Unimplemented. |
If you GET a directory, you will receive a JSON array of the files and directories inside. Directory names in the listing are appended with a /
.
You can distinguish files from directories with the X-Resource-Type
header which is either file
or directory
.
If you GET a path that doesn't exist, the status code will be 404
. If you GET something that isn't a file or directory (like a socket) the status code will be 415
.
If you PATCH or PUT to a directory, the directory will be deleted and a new file will be created in its place.
For environments that do not support the preceding methods, you can instead send a POST request specifying the X-HTTP-Method-Override
header set to the uppercase method name you wish to override.
Usage: io-serve [options]
Options:
--bind, -b The network address to bind upon [string]
--port, -p Port to start server on [number] [default: 33333]
-v, --version show version information [boolean]
-h, --help show help [boolean]
Some embedded environments allow access to HTTP requests but not the filesystem. io-serve bridges that gap.
By default, io-serve only binds to localhost
, which will prevent outside connections. While it is possible to bind on external addresses with the -b
option, it should only be done with great care.