本文介紹了使用express建構一個簡單的查詢伺服器的方法,分享給大家,具體如下:
使用到的技術棧有express、mysql.
專案結構:
service--node_modules--app.js--query.js
app.js支援呼叫服務,使用body-parser對request進行處理.
query.js實作連結資料庫以及查詢資料庫的功能.
app.js程式碼如下:
var express = require('express');var query = require('./query')var bodyParser = require('body-parser');var cookieParser = require('cookie-parser');var app = express( );app.use(bodyParser.urlencoded({ extended: false }))//回傳的物件是一個鍵值對,當extended為false的時候,鍵值對中的值就為'String'或'Array'形式,為true的時候,則可為任何資料型態。 app.use(bodyParser.json())//跨域支援app.all('*', function(req, res, next) { res.header(Access-Control-Allow-Origin, *); res.header ('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); res.header(Access-Control-Allow-Headers, X-Requested-With); res.header('Access-Control-Allow-Headers', 'Content-Type'); next();});//登入app.post('/login',(req, res)=>{ var opts = req.body; query( SELECT *FROM `v_users` WHERE userAcount = ?,opts.userName).then((result)=>{ var response = result[0]; if(opts.password !== response.u_password){ return res.send({ errorCode:'404', errorMsg: '登入密碼錯誤' }) } //模擬產生loginToken var loginToken = response.userAcount + Math.random()*Math.pow(10,16) res.send({ loginToken:loginToken }) })})var server = app.listen(3000,()=>{ console.log('success') })
query.js程式碼如下:
(function() { var mysql = require('mysql'); // var session = require('cookie-session'); var query = (sql,key) => { var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'root123', database: 'm_users' }); connection.connect() var promise = new Promise((resolve,reject)=>{ connection.query(sql,[key], function(error, results, fields) { if(error){ reject(error) }else{ resolve(results); } }); connection.end(); }); return promise; } module.exports = query;})()
實作總結:
1.express的入門級用法,以及body-parser和mysql插件的用法。
2.嘗試使用Inspector調試node程序,實現debugger,by the way 個人更習慣使用gulp來調試.
3.客戶端使用post調取介面的時候要區分Content-Type的差別:
Content-Type:application/json;charset=UTF-8 參數放在requestPayload
Content-Type:不設定或application/x-www-form-urlencoded 參數放在Form Data
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。