├── .gitignore ├── README.md ├── bin └── http-mysql-server ├── index.js ├── package-lock.json ├── package.json ├── upgrade.log └── view.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 安装 2 | 3 | ### 1.使用 npm 仓库安装 4 | ``` 5 | npm install -g http-mysql-server 6 | ``` 7 | ### 2.使用源码 安装 8 | ```bash 9 | #a.下载源码 10 | #b.进入源码包、安装依赖 11 | npm install 12 | #c. 链接脚本 13 | npm link 14 | 15 | ``` 16 | 17 | ## 启动服务器 18 | 19 | mysql的用户名、密码、数据库名、数据库的地址、端口、http服务的端口 ,下面罗列的均为默认值,可以不填 20 | 21 | ```bash 22 | http-mysql-server --user root --password 123456 --host 127.0.0.1 --database test --port 3306 --http_port 5555 23 | #如只指定 数据库端口 其他均用默认值 24 | http-mysql-server --port 3306 25 | ``` 26 | 27 | ## 使用方法 28 | 29 | 启动服务器后,可对该 HTTP 服务器发起 `POST` 请求,假设服务器访问地址为 `http://127.0.0.1:5555`,那么请求地址为 `http://127.0.0.1:555/api/query` 30 | 31 | 请求参数如下: 32 | 33 | |Name|Descrption| 34 | |------|-------| 35 | |sql|需要查询的 sql 语句| 36 | 37 | ## 示例 38 | 39 | ![](https://ws1.sinaimg.cn/large/006tCP9Lly1frk4kc305cj31ne0vuaec.jpg) 40 | -------------------------------------------------------------------------------- /bin/http-mysql-server: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const path = require('path') 3 | const argv = require('yargs').argv; 4 | let configPath = argv.config; 5 | let config; 6 | 7 | if(configPath){ 8 | configPath = path.resolve(process.cwd(), configPath); 9 | config = require(configPath) 10 | }else{ 11 | config = argv; 12 | } 13 | 14 | 15 | require('../index')(config) -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const koa = require("koa"); 2 | const koaBody = require("koa-body"); 3 | const mysql = require("mysql"); 4 | const argv = require("yargs").argv; 5 | 6 | module.exports = function(options) { 7 | function query(pool, sql) { 8 | return new Promise((resolve, reject) => { 9 | pool.getConnection(function(err, connection) { 10 | if(err){ 11 | err.message += '数据库连接失败' 12 | return reject(err) 13 | } 14 | connection.query(sql, function(error, results, fields) { 15 | connection.release(); 16 | if (error) reject(error); 17 | resolve({ 18 | results, 19 | fields 20 | }); 21 | }); 22 | }); 23 | }); 24 | } 25 | 26 | /** 27 | * config Object 28 | * host: "localhost", 29 | * user: "root", 30 | * password: "12345678", 31 | * database: "test" 32 | * 33 | * 详细 config 配置查看 https://github.com/mysqljs/mysql#connection-options 34 | */ 35 | 36 | config = { 37 | connectionLimit: 10, 38 | host: options.host || 'localhost', 39 | port: options.port || 3306, 40 | user: options.user || 'root', 41 | database: options.database || 'test', 42 | password: (options.password + '') || 'root' 43 | } 44 | 45 | const port = options.http_port || "5555"; 46 | 47 | const pool = mysql.createPool(config); 48 | 49 | const app = new koa(); 50 | 51 | app.use( 52 | koaBody({ 53 | multipart: true 54 | }) 55 | ); 56 | 57 | app.use((ctx, next)=>{ 58 | return next() 59 | }) 60 | 61 | app.use(async (ctx, next) => { 62 | if (ctx.path.indexOf("/api/query") === 0) { 63 | let params = ctx.request.body; 64 | let sql = params.sql; 65 | try { 66 | let data = await query(pool, sql); 67 | return (ctx.body = data.results); 68 | } catch (err) { 69 | return (ctx.body = { 70 | errcode: 400, 71 | message: err.message 72 | }); 73 | } 74 | } 75 | return await next(); 76 | }); 77 | 78 | app.use(async ctx => { 79 | let result 80 | try{ 81 | result = await query(pool, "show tables"); 82 | }catch(err){ 83 | return ctx.body = err.message 84 | } 85 | 86 | let tables = result.results.map(item => item["Tables_in_"+config.database]); 87 | let tableHtml = []; 88 | tables.forEach((item, index) => 89 | tableHtml.push( 90 | " " + (index + 1) + " " + item + "" 91 | ) 92 | ); 93 | 94 | ctx.body = require('./view')(tableHtml, port); 95 | }); 96 | 97 | 98 | app.listen(port, function() { 99 | console.log("服务启动成功, 请访问 “http://127.0.0.1:" + port + '"\n'); 100 | }); 101 | app.on('error', async (err, ctx, next) => { 102 | 103 | // TODO logger errStack 104 | console.error(err.message); 105 | 106 | }); 107 | }; 108 | 109 | 110 | 111 | var fs = require('fs') 112 | var util = require('util') 113 | 114 | var logPath = 'upgrade.log' 115 | var logFile = fs.createWriteStream(logPath, { flags: 'a' }) 116 | 117 | console.log = function() { 118 | logFile.write(util.format.apply(null, arguments) + '\n') 119 | process.stdout.write(util.format.apply(null, arguments) + '\n') 120 | } 121 | 122 | console.error = function() { 123 | logFile.write(util.format.apply(null, arguments) + '\n') 124 | process.stderr.write(util.format.apply(null, arguments) + '\n') 125 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "http-mysql-server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.5", 9 | "resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz", 10 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 11 | "requires": { 12 | "mime-types": "~2.1.18", 13 | "negotiator": "0.6.1" 14 | } 15 | }, 16 | "ansi-regex": { 17 | "version": "3.0.0", 18 | "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", 19 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 20 | }, 21 | "any-promise": { 22 | "version": "1.3.0", 23 | "resolved": "http://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz", 24 | "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" 25 | }, 26 | "bignumber.js": { 27 | "version": "4.0.4", 28 | "resolved": "http://registry.npm.taobao.org/bignumber.js/download/bignumber.js-4.0.4.tgz", 29 | "integrity": "sha1-fED1q80tZiOre5loLufbgbEYiaQ=" 30 | }, 31 | "bytes": { 32 | "version": "3.0.0", 33 | "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", 34 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 35 | }, 36 | "camelcase": { 37 | "version": "4.1.0", 38 | "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz", 39 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" 40 | }, 41 | "cliui": { 42 | "version": "4.1.0", 43 | "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz", 44 | "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", 45 | "requires": { 46 | "string-width": "^2.1.1", 47 | "strip-ansi": "^4.0.0", 48 | "wrap-ansi": "^2.0.0" 49 | } 50 | }, 51 | "co": { 52 | "version": "4.6.0", 53 | "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz", 54 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 55 | }, 56 | "co-body": { 57 | "version": "5.2.0", 58 | "resolved": "http://registry.npm.taobao.org/co-body/download/co-body-5.2.0.tgz", 59 | "integrity": "sha1-WgpljEYCkTHg46MG9nZHMC9xwSQ=", 60 | "requires": { 61 | "inflation": "^2.0.0", 62 | "qs": "^6.4.0", 63 | "raw-body": "^2.2.0", 64 | "type-is": "^1.6.14" 65 | } 66 | }, 67 | "code-point-at": { 68 | "version": "1.1.0", 69 | "resolved": "http://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz", 70 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 71 | }, 72 | "content-disposition": { 73 | "version": "0.5.2", 74 | "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.2.tgz", 75 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 76 | }, 77 | "content-type": { 78 | "version": "1.0.4", 79 | "resolved": "http://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", 80 | "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" 81 | }, 82 | "cookies": { 83 | "version": "0.7.1", 84 | "resolved": "http://registry.npm.taobao.org/cookies/download/cookies-0.7.1.tgz", 85 | "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", 86 | "requires": { 87 | "depd": "~1.1.1", 88 | "keygrip": "~1.0.2" 89 | } 90 | }, 91 | "core-util-is": { 92 | "version": "1.0.2", 93 | "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", 94 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 95 | }, 96 | "cross-spawn": { 97 | "version": "5.1.0", 98 | "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz", 99 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 100 | "requires": { 101 | "lru-cache": "^4.0.1", 102 | "shebang-command": "^1.2.0", 103 | "which": "^1.2.9" 104 | } 105 | }, 106 | "debug": { 107 | "version": "3.1.0", 108 | "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", 109 | "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", 110 | "requires": { 111 | "ms": "2.0.0" 112 | } 113 | }, 114 | "decamelize": { 115 | "version": "1.2.0", 116 | "resolved": "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", 117 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 118 | }, 119 | "deep-equal": { 120 | "version": "1.0.1", 121 | "resolved": "http://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz", 122 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" 123 | }, 124 | "delegates": { 125 | "version": "1.0.0", 126 | "resolved": "http://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz", 127 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 128 | }, 129 | "depd": { 130 | "version": "1.1.2", 131 | "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", 132 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 133 | }, 134 | "destroy": { 135 | "version": "1.0.4", 136 | "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", 137 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 138 | }, 139 | "ee-first": { 140 | "version": "1.1.1", 141 | "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", 142 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 143 | }, 144 | "error-inject": { 145 | "version": "1.0.0", 146 | "resolved": "http://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz", 147 | "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" 148 | }, 149 | "escape-html": { 150 | "version": "1.0.3", 151 | "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", 152 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 153 | }, 154 | "execa": { 155 | "version": "0.7.0", 156 | "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz", 157 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 158 | "requires": { 159 | "cross-spawn": "^5.0.1", 160 | "get-stream": "^3.0.0", 161 | "is-stream": "^1.1.0", 162 | "npm-run-path": "^2.0.0", 163 | "p-finally": "^1.0.0", 164 | "signal-exit": "^3.0.0", 165 | "strip-eof": "^1.0.0" 166 | } 167 | }, 168 | "find-up": { 169 | "version": "2.1.0", 170 | "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz", 171 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 172 | "requires": { 173 | "locate-path": "^2.0.0" 174 | } 175 | }, 176 | "formidable": { 177 | "version": "1.2.1", 178 | "resolved": "http://registry.npm.taobao.org/formidable/download/formidable-1.2.1.tgz", 179 | "integrity": "sha1-cPt8oCkO5v+WEJBBX0s989IIJlk=" 180 | }, 181 | "fresh": { 182 | "version": "0.5.2", 183 | "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", 184 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 185 | }, 186 | "get-caller-file": { 187 | "version": "1.0.2", 188 | "resolved": "http://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.2.tgz", 189 | "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" 190 | }, 191 | "get-stream": { 192 | "version": "3.0.0", 193 | "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", 194 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" 195 | }, 196 | "http-assert": { 197 | "version": "1.3.0", 198 | "resolved": "http://registry.npm.taobao.org/http-assert/download/http-assert-1.3.0.tgz", 199 | "integrity": "sha1-oxpc+IyHPsu1eWkH1NbxMujAHko=", 200 | "requires": { 201 | "deep-equal": "~1.0.1", 202 | "http-errors": "~1.6.1" 203 | } 204 | }, 205 | "http-errors": { 206 | "version": "1.6.3", 207 | "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz", 208 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 209 | "requires": { 210 | "depd": "~1.1.2", 211 | "inherits": "2.0.3", 212 | "setprototypeof": "1.1.0", 213 | "statuses": ">= 1.4.0 < 2" 214 | } 215 | }, 216 | "iconv-lite": { 217 | "version": "0.4.23", 218 | "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.23.tgz", 219 | "integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=", 220 | "requires": { 221 | "safer-buffer": ">= 2.1.2 < 3" 222 | } 223 | }, 224 | "inflation": { 225 | "version": "2.0.0", 226 | "resolved": "http://registry.npm.taobao.org/inflation/download/inflation-2.0.0.tgz", 227 | "integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=" 228 | }, 229 | "inherits": { 230 | "version": "2.0.3", 231 | "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 232 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 233 | }, 234 | "invert-kv": { 235 | "version": "1.0.0", 236 | "resolved": "http://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz", 237 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" 238 | }, 239 | "is-fullwidth-code-point": { 240 | "version": "2.0.0", 241 | "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", 242 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 243 | }, 244 | "is-generator-function": { 245 | "version": "1.0.7", 246 | "resolved": "http://registry.npm.taobao.org/is-generator-function/download/is-generator-function-1.0.7.tgz", 247 | "integrity": "sha1-0hMuUpuwAAp/gHlNS99c1eWBNSI=" 248 | }, 249 | "is-stream": { 250 | "version": "1.1.0", 251 | "resolved": "http://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", 252 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 253 | }, 254 | "isarray": { 255 | "version": "1.0.0", 256 | "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", 257 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 258 | }, 259 | "isexe": { 260 | "version": "2.0.0", 261 | "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", 262 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 263 | }, 264 | "keygrip": { 265 | "version": "1.0.2", 266 | "resolved": "http://registry.npm.taobao.org/keygrip/download/keygrip-1.0.2.tgz", 267 | "integrity": "sha1-rTKXxVcGneqLz+ek+kkbdcXd65E=" 268 | }, 269 | "koa": { 270 | "version": "2.5.1", 271 | "resolved": "http://registry.npm.taobao.org/koa/download/koa-2.5.1.tgz", 272 | "integrity": "sha1-efi5X41y0E/ppYqNpevW00EQP5w=", 273 | "requires": { 274 | "accepts": "^1.2.2", 275 | "content-disposition": "~0.5.0", 276 | "content-type": "^1.0.0", 277 | "cookies": "~0.7.0", 278 | "debug": "*", 279 | "delegates": "^1.0.0", 280 | "depd": "^1.1.0", 281 | "destroy": "^1.0.3", 282 | "error-inject": "~1.0.0", 283 | "escape-html": "~1.0.1", 284 | "fresh": "^0.5.2", 285 | "http-assert": "^1.1.0", 286 | "http-errors": "^1.2.8", 287 | "is-generator-function": "^1.0.3", 288 | "koa-compose": "^4.0.0", 289 | "koa-convert": "^1.2.0", 290 | "koa-is-json": "^1.0.0", 291 | "mime-types": "^2.0.7", 292 | "on-finished": "^2.1.0", 293 | "only": "0.0.2", 294 | "parseurl": "^1.3.0", 295 | "statuses": "^1.2.0", 296 | "type-is": "^1.5.5", 297 | "vary": "^1.0.0" 298 | } 299 | }, 300 | "koa-body": { 301 | "version": "2.5.0", 302 | "resolved": "http://registry.npm.taobao.org/koa-body/download/koa-body-2.5.0.tgz", 303 | "integrity": "sha1-hOj82NUimozBy5ipJuk5Bp5xaRU=", 304 | "requires": { 305 | "co-body": "^5.1.1", 306 | "formidable": "^1.1.1" 307 | } 308 | }, 309 | "koa-compose": { 310 | "version": "4.0.0", 311 | "resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-4.0.0.tgz", 312 | "integrity": "sha1-KAClE9nDYe8NY4UrA45Pby1adzw=" 313 | }, 314 | "koa-convert": { 315 | "version": "1.2.0", 316 | "resolved": "http://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz", 317 | "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", 318 | "requires": { 319 | "co": "^4.6.0", 320 | "koa-compose": "^3.0.0" 321 | }, 322 | "dependencies": { 323 | "koa-compose": { 324 | "version": "3.2.1", 325 | "resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz", 326 | "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", 327 | "requires": { 328 | "any-promise": "^1.1.0" 329 | } 330 | } 331 | } 332 | }, 333 | "koa-is-json": { 334 | "version": "1.0.0", 335 | "resolved": "http://registry.npm.taobao.org/koa-is-json/download/koa-is-json-1.0.0.tgz", 336 | "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=" 337 | }, 338 | "lcid": { 339 | "version": "1.0.0", 340 | "resolved": "http://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz", 341 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 342 | "requires": { 343 | "invert-kv": "^1.0.0" 344 | } 345 | }, 346 | "locate-path": { 347 | "version": "2.0.0", 348 | "resolved": "http://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz", 349 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 350 | "requires": { 351 | "p-locate": "^2.0.0", 352 | "path-exists": "^3.0.0" 353 | } 354 | }, 355 | "lru-cache": { 356 | "version": "4.1.3", 357 | "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.3.tgz", 358 | "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", 359 | "requires": { 360 | "pseudomap": "^1.0.2", 361 | "yallist": "^2.1.2" 362 | } 363 | }, 364 | "media-typer": { 365 | "version": "0.3.0", 366 | "resolved": "http://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 367 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 368 | }, 369 | "mem": { 370 | "version": "1.1.0", 371 | "resolved": "http://registry.npm.taobao.org/mem/download/mem-1.1.0.tgz", 372 | "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", 373 | "requires": { 374 | "mimic-fn": "^1.0.0" 375 | } 376 | }, 377 | "mime-db": { 378 | "version": "1.33.0", 379 | "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.33.0.tgz", 380 | "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=" 381 | }, 382 | "mime-types": { 383 | "version": "2.1.18", 384 | "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.18.tgz", 385 | "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", 386 | "requires": { 387 | "mime-db": "~1.33.0" 388 | } 389 | }, 390 | "mimic-fn": { 391 | "version": "1.2.0", 392 | "resolved": "http://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz", 393 | "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=" 394 | }, 395 | "ms": { 396 | "version": "2.0.0", 397 | "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", 398 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 399 | }, 400 | "mysql": { 401 | "version": "2.15.0", 402 | "resolved": "http://registry.npm.taobao.org/mysql/download/mysql-2.15.0.tgz", 403 | "integrity": "sha1-6haEEVY0Po8uR/yJhexBzdlXO1w=", 404 | "requires": { 405 | "bignumber.js": "4.0.4", 406 | "readable-stream": "2.3.3", 407 | "safe-buffer": "5.1.1", 408 | "sqlstring": "2.3.0" 409 | } 410 | }, 411 | "negotiator": { 412 | "version": "0.6.1", 413 | "resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz", 414 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 415 | }, 416 | "npm-run-path": { 417 | "version": "2.0.2", 418 | "resolved": "http://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz", 419 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 420 | "requires": { 421 | "path-key": "^2.0.0" 422 | } 423 | }, 424 | "number-is-nan": { 425 | "version": "1.0.1", 426 | "resolved": "http://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz", 427 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 428 | }, 429 | "on-finished": { 430 | "version": "2.3.0", 431 | "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 432 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 433 | "requires": { 434 | "ee-first": "1.1.1" 435 | } 436 | }, 437 | "only": { 438 | "version": "0.0.2", 439 | "resolved": "http://registry.npm.taobao.org/only/download/only-0.0.2.tgz", 440 | "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" 441 | }, 442 | "os-locale": { 443 | "version": "2.1.0", 444 | "resolved": "http://registry.npm.taobao.org/os-locale/download/os-locale-2.1.0.tgz", 445 | "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", 446 | "requires": { 447 | "execa": "^0.7.0", 448 | "lcid": "^1.0.0", 449 | "mem": "^1.1.0" 450 | } 451 | }, 452 | "p-finally": { 453 | "version": "1.0.0", 454 | "resolved": "http://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz", 455 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" 456 | }, 457 | "p-limit": { 458 | "version": "1.2.0", 459 | "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-1.2.0.tgz", 460 | "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", 461 | "requires": { 462 | "p-try": "^1.0.0" 463 | } 464 | }, 465 | "p-locate": { 466 | "version": "2.0.0", 467 | "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz", 468 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 469 | "requires": { 470 | "p-limit": "^1.1.0" 471 | } 472 | }, 473 | "p-try": { 474 | "version": "1.0.0", 475 | "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz", 476 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" 477 | }, 478 | "parseurl": { 479 | "version": "1.3.2", 480 | "resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz", 481 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 482 | }, 483 | "path-exists": { 484 | "version": "3.0.0", 485 | "resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", 486 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 487 | }, 488 | "path-key": { 489 | "version": "2.0.1", 490 | "resolved": "http://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz", 491 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 492 | }, 493 | "process-nextick-args": { 494 | "version": "1.0.7", 495 | "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-1.0.7.tgz", 496 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" 497 | }, 498 | "pseudomap": { 499 | "version": "1.0.2", 500 | "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", 501 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 502 | }, 503 | "qs": { 504 | "version": "6.5.2", 505 | "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz", 506 | "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" 507 | }, 508 | "raw-body": { 509 | "version": "2.3.3", 510 | "resolved": "http://registry.npm.taobao.org/raw-body/download/raw-body-2.3.3.tgz", 511 | "integrity": "sha1-GzJOzmtXBuFThVvBFIxlu39uoMM=", 512 | "requires": { 513 | "bytes": "3.0.0", 514 | "http-errors": "1.6.3", 515 | "iconv-lite": "0.4.23", 516 | "unpipe": "1.0.0" 517 | } 518 | }, 519 | "readable-stream": { 520 | "version": "2.3.3", 521 | "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.3.tgz", 522 | "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", 523 | "requires": { 524 | "core-util-is": "~1.0.0", 525 | "inherits": "~2.0.3", 526 | "isarray": "~1.0.0", 527 | "process-nextick-args": "~1.0.6", 528 | "safe-buffer": "~5.1.1", 529 | "string_decoder": "~1.0.3", 530 | "util-deprecate": "~1.0.1" 531 | } 532 | }, 533 | "require-directory": { 534 | "version": "2.1.1", 535 | "resolved": "http://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", 536 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 537 | }, 538 | "require-main-filename": { 539 | "version": "1.0.1", 540 | "resolved": "http://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz", 541 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" 542 | }, 543 | "safe-buffer": { 544 | "version": "5.1.1", 545 | "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", 546 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" 547 | }, 548 | "safer-buffer": { 549 | "version": "2.1.2", 550 | "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", 551 | "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" 552 | }, 553 | "set-blocking": { 554 | "version": "2.0.0", 555 | "resolved": "http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", 556 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 557 | }, 558 | "setprototypeof": { 559 | "version": "1.1.0", 560 | "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", 561 | "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" 562 | }, 563 | "shebang-command": { 564 | "version": "1.2.0", 565 | "resolved": "http://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", 566 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 567 | "requires": { 568 | "shebang-regex": "^1.0.0" 569 | } 570 | }, 571 | "shebang-regex": { 572 | "version": "1.0.0", 573 | "resolved": "http://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", 574 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 575 | }, 576 | "signal-exit": { 577 | "version": "3.0.2", 578 | "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", 579 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 580 | }, 581 | "sqlstring": { 582 | "version": "2.3.0", 583 | "resolved": "http://registry.npm.taobao.org/sqlstring/download/sqlstring-2.3.0.tgz", 584 | "integrity": "sha1-UluKT9Jtb3GqYegipsr5dtMa0qg=" 585 | }, 586 | "statuses": { 587 | "version": "1.5.0", 588 | "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", 589 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 590 | }, 591 | "string-width": { 592 | "version": "2.1.1", 593 | "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", 594 | "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", 595 | "requires": { 596 | "is-fullwidth-code-point": "^2.0.0", 597 | "strip-ansi": "^4.0.0" 598 | } 599 | }, 600 | "string_decoder": { 601 | "version": "1.0.3", 602 | "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.0.3.tgz", 603 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 604 | "requires": { 605 | "safe-buffer": "~5.1.0" 606 | } 607 | }, 608 | "strip-ansi": { 609 | "version": "4.0.0", 610 | "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", 611 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 612 | "requires": { 613 | "ansi-regex": "^3.0.0" 614 | } 615 | }, 616 | "strip-eof": { 617 | "version": "1.0.0", 618 | "resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", 619 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" 620 | }, 621 | "type-is": { 622 | "version": "1.6.16", 623 | "resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz", 624 | "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", 625 | "requires": { 626 | "media-typer": "0.3.0", 627 | "mime-types": "~2.1.18" 628 | } 629 | }, 630 | "unpipe": { 631 | "version": "1.0.0", 632 | "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", 633 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 634 | }, 635 | "util-deprecate": { 636 | "version": "1.0.2", 637 | "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", 638 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 639 | }, 640 | "vary": { 641 | "version": "1.1.2", 642 | "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", 643 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 644 | }, 645 | "which": { 646 | "version": "1.3.0", 647 | "resolved": "http://registry.npm.taobao.org/which/download/which-1.3.0.tgz", 648 | "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", 649 | "requires": { 650 | "isexe": "^2.0.0" 651 | } 652 | }, 653 | "which-module": { 654 | "version": "2.0.0", 655 | "resolved": "http://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", 656 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 657 | }, 658 | "wrap-ansi": { 659 | "version": "2.1.0", 660 | "resolved": "http://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz", 661 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 662 | "requires": { 663 | "string-width": "^1.0.1", 664 | "strip-ansi": "^3.0.1" 665 | }, 666 | "dependencies": { 667 | "ansi-regex": { 668 | "version": "2.1.1", 669 | "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", 670 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 671 | }, 672 | "is-fullwidth-code-point": { 673 | "version": "1.0.0", 674 | "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", 675 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 676 | "requires": { 677 | "number-is-nan": "^1.0.0" 678 | } 679 | }, 680 | "string-width": { 681 | "version": "1.0.2", 682 | "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", 683 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 684 | "requires": { 685 | "code-point-at": "^1.0.0", 686 | "is-fullwidth-code-point": "^1.0.0", 687 | "strip-ansi": "^3.0.0" 688 | } 689 | }, 690 | "strip-ansi": { 691 | "version": "3.0.1", 692 | "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", 693 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 694 | "requires": { 695 | "ansi-regex": "^2.0.0" 696 | } 697 | } 698 | } 699 | }, 700 | "y18n": { 701 | "version": "3.2.1", 702 | "resolved": "http://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz", 703 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" 704 | }, 705 | "yallist": { 706 | "version": "2.1.2", 707 | "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", 708 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 709 | }, 710 | "yargs": { 711 | "version": "11.0.0", 712 | "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-11.0.0.tgz", 713 | "integrity": "sha1-wFKTEAbF7udGEOX8A1S+39CKIBs=", 714 | "requires": { 715 | "cliui": "^4.0.0", 716 | "decamelize": "^1.1.1", 717 | "find-up": "^2.1.0", 718 | "get-caller-file": "^1.0.1", 719 | "os-locale": "^2.0.0", 720 | "require-directory": "^2.1.1", 721 | "require-main-filename": "^1.0.1", 722 | "set-blocking": "^2.0.0", 723 | "string-width": "^2.0.0", 724 | "which-module": "^2.0.0", 725 | "y18n": "^3.2.1", 726 | "yargs-parser": "^9.0.2" 727 | } 728 | }, 729 | "yargs-parser": { 730 | "version": "9.0.2", 731 | "resolved": "http://registry.npm.taobao.org/yargs-parser/download/yargs-parser-9.0.2.tgz", 732 | "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", 733 | "requires": { 734 | "camelcase": "^4.1.0" 735 | } 736 | } 737 | } 738 | } 739 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "http-mysql-server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "bin": { 10 | "http-mysql-server": "./bin/http-mysql-server" 11 | }, 12 | "author": "", 13 | "license": "ISC", 14 | "dependencies": { 15 | "koa": "^2.5.1", 16 | "koa-body": "^2.5.0", 17 | "mysql": "^2.15.0", 18 | "yargs": "^11.0.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /upgrade.log: -------------------------------------------------------------------------------- 1 | 服务启动成功, 请访问 “http://127.0.0.1:5555" 2 | 3 | 服务启动成功, 请访问 “http://127.0.0.1:555" 4 | 5 | -------------------------------------------------------------------------------- /view.js: -------------------------------------------------------------------------------- 1 | module.exports = function(tableHtml, port) { 2 | return ` 3 | 10 |

使用方法

11 | 12 |

13 | 对Api “http://127.0.0.1:${port}/api/query” 发起 "post" 请求,参数如下: 14 |

15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
参数名描述
sql需要查询的 sql 语句
26 | 27 |

Jquery 示例

28 |
29 |     $.post('http://127.0.0.1:${port}/api/query', {sql: 'show tables'}, function(res){
30 |       console.log(res)
31 |     })
32 |   
33 |

数据表如下

34 | 35 | ${tableHtml} 36 |
37 | `; 38 | }; 39 | --------------------------------------------------------------------------------