https://github.com/alexindigo/agnostic
A node library that allows other projects to be agnostic of particular http server implementation
https://github.com/alexindigo/agnostic
agnostic byos express hapi http library nodejs restify server web wrapper
Last synced: 11 months ago
JSON representation
A node library that allows other projects to be agnostic of particular http server implementation
- Host: GitHub
- URL: https://github.com/alexindigo/agnostic
- Owner: alexindigo
- License: mit
- Created: 2016-08-08T16:23:19.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-09-03T23:24:58.000Z (over 5 years ago)
- Last Synced: 2025-03-16T17:05:57.730Z (11 months ago)
- Topics: agnostic, byos, express, hapi, http, library, nodejs, restify, server, web, wrapper
- Language: JavaScript
- Homepage: https://www.npmjs.com/agnostic
- Size: 37.1 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# agnostic [](https://www.npmjs.com/package/agnostic)
A library that allows other projects to be agnostic of particular http server implementation.
[](https://travis-ci.org/alexindigo/agnostic)
[](https://travis-ci.org/alexindigo/agnostic)
[](https://ci.appveyor.com/project/alexindigo/agnostic)
[](https://coveralls.io/github/alexindigo/agnostic?branch=master)
[](https://david-dm.org/alexindigo/agnostic)
[](https://www.bithound.io/github/alexindigo/agnostic)
*Notice of change of ownership: Starting version 1.0.0 this package has changed it's owner and goals. Old version (0.0.0) is still available on npm via `npm install agnostic@0.0.0` or on [github](https://github.com/dtudury/agnostic). Thank you.*
| node / libs | express | restify | hapi | http |
| :-- | :-- | :-- | :-- | :-- |
| v0.12 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x | ✓ |
| io.js | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x | ✓ |
| v4 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x | ✓ |
| v5 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x | ✓ |
| v6 | 3.x, 4.x | 2.x, 3.x, 4.x | 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x | ✓ |
## Install
```
npm install --save agnostic
```
## Example
### Your Library
```javascript
var agnostic = require('agnostic');
module.exports = agnostic(myRequestHandler);
/**
* Does cool things
*
* @param {EventEmitter} request - request object, mimicking IncomingMessage
* @param {Function} respond - callback to respond to the request
*/
function myRequestHandler(request, respond)
{
// do cool things
// `request.body` - parsed request body
// `request.query` - parsed query string
// `respond` is a function with the following signature:
// `respond([code], [content[, options]]);`
respond(200, 'Received hit to ' + request.url, {headers: {'X-Powered-By': 'AllCoolThings'}});
}
```
### Express [](http://expressjs.com)
```javascript
var express = require('express');
var coolLib = require('above-cool-lib');
var app = express();
app.all('/my-endpoint', coolLib);
// start the server
app.listen(1337);
```
### Restify [](http://restify.com)
```javascript
var restify = require('restify');
var coolLib = require('above-cool-lib');
var server = restify.createServer();
server.get('/my-endpoint', coolLib);
server.post('/my-endpoint', coolLib);
// start the server
server.listen(1337);
```
### Hapi [](http://hapijs.com)
```javascript
var Hapi = require('hapi');
var coolLib = require('above-cool-lib');
var server = new Hapi.Server();
// setup hapi server
server.connection({ port: 1337 });
server.route({
method : ['GET', 'POST'], // Hapi uses GET handler for HEAD requests
path : '/my-endpoint',
handler: coolLib
});
// start the server
server.start();
```
### http [](https://nodejs.org/api/http.html)
```javascript
var http = require('http');
var coolLib = require('above-cool-lib');
server = http.createServer(coolLib);
// start the server
server.listen(1337);
```
## Want to Know More?
More examples can be found in [test folder](test/).
Or open an [issue](https://github.com/alexindigo/agnostic/issues) with questions and/or suggestions.
## License
Agnostic is released under the [MIT](LICENSE) license.