很久以前就学习过nodejs这玩意,所以有些朋友问我怎么使用nodejs搭建一个服务,所以今天又重新拾起记忆,准备写一个简单的服务器并记录下来。这里使用了express框架来搭建,首先就需要安装好express。
安装:npm install express
安装完成之后,需要创建一个js文件,我这里命名为app.js方便记忆。
express中文官网的地址:https://www.expressjs.com.cn/starter/basic-routing.html
一、初步搭建
const express = require('express');
const app = express();
app.get('/home',(request,response)=>{
response.send('hello world!')
})
app.listen(8087, ()=>{
console.log('服务器开启!')
})
使用node命令运行该文件:node ./app.js
;只要不出意外,就可以正常的运行起来
注意了,这里的端口号必须不能是使用目前已经在使用的,否则就会报端口号占用的错误。
二、静态服务器托管文件
通过app.use(express.static('public'))
就可以将当前目录下public文件中的静态资源对外开放访问了。直接就可以通过http://localhost:8087/1.png
访问到对应的静态文件。
三、get请求
const express = require('express');
const app = express()
app.get('/random/image',(request,response)=>{
// 设置请求头
response.setHeader('Content-Type','text/json')
// 可以使用request.query来获取到约定好的参数对象
response.send(request.query)
})
app.listen(8087,()=>{
console.log('服务器开启!')
})
get接受到请求回来的数据后,又给返回了
四、post请求
const express = require('express')
const app = express()
app.post('/test_post',(request,response)=>{
response.send('恭喜访问成功')
})
app.listen(4399,()=>{
console.log('服务器开启');
})
post请求不方便测试,下载了一个postman来测试这个post请求。注意:每一次修改文件里的数据,都需要重新启动服务器才能有效。
获取post请求过来的参数
获取到post请求的参数需要配合一个插件来获取会更加的方便一点:npm i body-parser
,更加具体的使用方式可以参照npm官网
const express = require('express')
// 引入文件
const bodyParser = require('body-parser')
const app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/test_post',(request,response)=>{
console.log(JSON.stringify(request.body));
response.send({
code:200,
data:'返回成功'
})
})
app.listen(4399,()=>{
console.log('服务器开启');
})
五、连接MySQL数据库
连接数据库这里使用了mysql第三方插件,执行npm i mysql
安装好mysql后,详细看官网
const express = require('express')
const mysql = require('mysql')
const app = express()
// 创建数据库连接
let connection = mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'my_base'
})
// 打开链接
connection.connect();
app.get('/text_get',(request,response)=>{
connection.query('select * from user',(error,result,fields)=>{
// 当error为null时,就表示没有错误信息
// result返回表中的数据
// fields返回表中的字段
if(!error){
response.send({
code:'200',
data:result
})
}
})
// 关闭链接
connection.end()
})
app.listen(4399,()=>{
console.log('服务器开启');
})
数据库这个时候必须要启动着,然后使用postman请求一下接口,能返回数据库中查出来的数据,就表明这个接口完成了。
六、post请求登录案例
const express = require('express')
// 引入文件
const bodyParser = require('body-parser')
const mysql = require('mysql')
const app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// 创建数据库连接
let connection = mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'my_base'
})
// 打开链接
connection.connect();
app.post('/test_post',(request,response)=>{
// let param = JSON.stringify(request.body)
let { username, password } = request.body
connection.query('select * from user',(error,result,fields)=>{
if(!error){
for(let i = 0; i < result.length; i++){
if(result[i].username == username && result[i].password == password){
return response.send({
code:200,
data:'登录成功'
})
}else{
return response.send({
code:500,
data:'服务器错误'
})
}
}
// 关闭链接
connection.end()
}
})
})
app.listen(4399,()=>{
console.log('服务器开启');
})