├── .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 | 
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 | sql |
23 | 需要查询的 sql 语句 |
24 |
25 |
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 |
37 | `;
38 | };
39 |
--------------------------------------------------------------------------------