# express-qx-router

> a node.js module for express middleware, about auth,origin cors, body-parser and more, please se readme.md for details

Latest version **0.6.1** (published 2016-11-24) · ISC license · 0 weekly downloads

## Install

```sh
npm install express-qx-router
pnpm add express-qx-router
yarn add express-qx-router
bun add express-qx-router
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.6.1 |
| Published | 2016-11-24 |
| First published | 2016-11-24 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=4.0.0 |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 7 |
| Author | xuezi |
| Maintainers | xuezi |

## Links

- npm: https://www.npmjs.com/package/express-qx-router
- Repository: https://github.com/xuezier/koa-qx-router
- Homepage: https://github.com/xuezier/koa-qx-router#readme
- Issues: https://github.com/xuezier/koa-qx-router/issues
- npm.io page: https://npm.io/package/express-qx-router

## Dependencies (2)

- [co](https://npm.io/package/co.md) ^4.6.0
- [formidable](https://npm.io/package/formidable.md) ^1.0.17

## Recent versions

- 0.6.1 (latest) — 2016-11-24
- 0.6.0 — 2016-11-24

## README

# Express-qx-router
[![NPM version][npm-image]][npm-url]

配合Express使用的路由服务分发注册系统,Now , you can use the service !!!! please see the [readme.md](https://github.com/xuezier/koa-qx-router/blob/dev/readme.md)

                         _oo0oo_
                        088888880
                        88" . "88
                        (| -_- |)
                         0\ = /0
                      ___/'---'\___
                    .' \\|     |// '.
                   / \\|||  :  |||// \
                  /_ ||||| -:- |||||- \
                 |   | \\\  -  /// |   |
                 | \_|  ''\---/''  |_/ |
                 \  .-\__  '-'  __/-.  /
               ___'. .'  /--.--\  '. .'___
            ."" '<  '.___\_<|>_/___.' >'  "".
           | | : '-  \'.;'\ _ /';.'/ - ' : | |
           \  \ '_.   \_ __\ /__ _/   .-' /  /
       ====='-.____'.___ \_____/___.-'____.-'=====
                         '=---='

     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
           Buddha bless    : :    Never BUGs


## Installation (via npm)
npm install express-qx-router

or

npm install express-qx-router --save

## Usage
### On Main Server
````javascript
const qx = require("express-qx-router");
const qxServer = new qx.server();

qxServer.listen(mainPort, mainHostname, cb);
````

#### Install Auth
Install auth must be used. add an auth at least. An auth can only be used by one person to cerate client Service to connect the main service.
````javascript
qxServer.install({name1:pass1, name2:pass2 ...});
````

### On Client Server
create a app
````javascript
const express = require("express");
const app = express();
````
create a client service object
````javascript
const qx = require("express-qx-router");
const qxClient = new qx.client({
    port: mainPort,             // 主路由的端口,default 1333
    hostname: mainHostname,     // 主路由的hostname,default 127.0.0.1
    auth:{
        name: auth_name,    // 注册主路由时的auth,作为验证,需要在主路由中先配置此项
        pass: auth_pass
    }
});
````

#### Origin Cors
````javascript
app.use(qxClient.cors(options));
````
##### Options
Configures the Access-Control-Allow-Origin CORS header.
Options is a json.

    origin          Array, default [*], set `Access-Control-Allow-Origin`
    credentials     Boolean, default false, set `Access-Control-Allow-Credentials`
    allowMethods    String, default 'GET,HEAD,PUT,POST,DELETE', set `Access-Control-Allow-Methods`
    strict          Boolean, false, set `Access-Control-Allow-Origin` cors model

#### Auth
````javascript
app.use(qxClient.auth({
    name: name,
    pass: pass
}));
````
if didnt set name and pass, qxClient will auto generate a name and pass.

#### BodyParser
````javascript
app.use(qxClient.bodyParser(options))
````
#####Options
Parse the request body. options is a json

    encoding    String, default `utf-8`
    multipart   Boolean, allow multipart data, default true,
    jsonLimit   String|Integer, The byte (if integer) limit of the JSON body, default 1mb
    formLimit   String|Integer, The byte (if integer) limit of the form body, default 56kb
    textLimit   String|Integer, The byte (if integer) limit of the text body, default 56kb
    patchNode   Boolean, Patch request body to Node's ctx.req, default false
    patchKoa    Boolean, Patch request body to Koa's ctx.request, default true


add router-api
````javascript
app.all("/getname", function (req,res){
    res.send("ok");
});
````

start client service
````javascript
app.listen(clientPort, qxClient.registerServer(app));
````
Now, defined a rest Api for http://127.0.0.1:clientPort/getname, access the api you can use curl like
````bash
curl http://mainHostname:mainPort/auth_name/getname
````





## Support
use the module must start least 2 service processes. 1 for Main service, others for client service processes.

Main service process is open to the outside world.

Client service processes is closed, not open to the outside world.

Users only through the main service process to access client service processes.

## disclaimer
此模块是开发者自主兴趣开发和维护，不参与商业性运作，开发者具有最终解释权，如有任何疑问请在github上创建issue。

[npm-image]: https://img.shields.io/npm/v/express-qx-router.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/express-qx-router

---
_Source: https://npm.io/package/express-qx-router · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
