Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bimedia-fr/bimedia-front-server
simple test server
https://github.com/bimedia-fr/bimedia-front-server
Last synced: 8 days ago
JSON representation
simple test server
- Host: GitHub
- URL: https://github.com/bimedia-fr/bimedia-front-server
- Owner: bimedia-fr
- License: apache-2.0
- Created: 2015-01-12T09:25:58.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2023-02-02T13:25:11.000Z (almost 2 years ago)
- Last Synced: 2024-04-25T16:02:55.111Z (8 months ago)
- Language: JavaScript
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 10
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
bimedia-front-server
================Bimedia Front-end test server.
## features :
* serve static assets
* static data fixtures
* http method to resource mapping
* proxied data
* custom test routesExample :
```js
var server = require('./test-server');
var path = require('path');var PORT = 9090;
server({
fixtures : {
path : path.join(__dirname, './fixtures'),
prefix : 'api'
},
'static' : {
path : path.join(__dirname, './src')
}
}).listen(PORT, function () {
console.log('test server listening on port %d', PORT);
});
```
This example create a server listening on port 9090 that will serve any static resource availiable in `src` subfolder.
It will also serve JSON data availiable in `fixtures` folder for every request with the path starting with `api`.## static assets
Serve files in `static.path` like any http server.
## fixtures
The server tries to find a matching ressource in the filesystem in path denoted by config `fixtures.path`.
Example:
`GET /api/auth/token`
will serve file :
`$cwd/auth/token.json`
### method mapping
For any http method other than GET, it will append method name in lowercase at the end of requested uri.
Example:
`POST /api/auth/token`
will serve file :
`$cwd/auth/token-post.json`
## proxied data
Fixtures can be retrieved from an url. The test server serves proxy data.
Example :
```js
var server = require('./test-server');
var path = require('path');var PORT = 9090;
server({
fixtures : {
url : 'http://my.remotehost.com/fixtures',
prefix : 'api'
},
'static' : {
path : path.join(__dirname, './src')
}
}).listen(PORT, function () {
console.log('test server listening on port %d', PORT);
});
```## multiple fixtures sources
Fixtures can be retrieved from more than one location, both locally or remotely.
Example :
```js
var server = require('./test-server');
var path = require('path');var PORT = 9090;
server({
fixtures : [{
url : 'http://my.remotehost.com/fixtures',
prefix : 'api/params'
},
{
path : path.join(__dirname, './fixtures'),
prefix : 'api'
}
],
'static' : {
path : path.join(__dirname, './src')
}
}).listen(PORT, function () {
console.log('test server listening on port %d', PORT);
});
```## custom test routes
Add custom route and logic with routes method.
```js
server({
fixtures : {
path : path.join(__dirname, './fixtures'),
prefix : 'api'
},
'static' : {
path : path.join(__dirname, './src')
}
}).routes(function (router) {
router.get(/api\/([0-9]{4}-[0-9]{2}-[0-9]{2})/, function (str) {
this.res.writeHead(200, {
'Content-Type': 'text/plain'
});
this.res.end(str);
});
}).listen(PORT, function () {
console.log('test server listening on port %d', PORT);
});
```## based on :
* [ecstatic](https://github.com/jesusabdullah/node-ecstatic) file server.
* [union](https://github.com/flatiron/union) http server.
* [director](https://github.com/flatiron/director) router.
* [http-proxy](https://github.com/nodejitsu/node-http-proxy) proxy.