定制网站node.js+Express框架,前端自己创建接口

目录


定制网站这篇文章看完如果您觉定制网站得有所收获,定制网站认为还行的话,定制网站就点个赞收藏一下呗

一、安装

1、安装node.js

node就不讲了,定制网站你们应该都安装过了 

2、安装

定制网站官方给出的概念:Express是基于Node.js平台,快速、开发、极简的Web开发框架 

定制网站通俗的理解:Express的作用和Node.js内置的http模块类似,定制网站是专门用了创建Web服务器的

定制网站在项目所处的目录中(输入cmd定制网站即可看到终端),定制网站运行如下的终端命令,即可将express定制网站安装到项目中使用:

  1. 1)全局安装
  2. express npm install -g express-generator
  3. 2)定制网站查看是否安装成功
  4. express -v
  5. 3)定制网站建立后端服务器文件夹
  6. server express server -e.
  7. 4)定制网站进入创建的文件夹
  8. cd server
  9. 5)安装 
  10. npm i

定制网站到这里安装就结束了,定制网站目录的介绍如下

定制网站然后把文件server用vscode打开,定制网站打开控制台输入命令npm start 

定制网站然后打开浏览器,定制网站输入默认地址即可打开网页

定制网站若是想要不想使用默认端口3000,可以自己定义端口号

打开server/app.js,在文件中写以下代码

  1. // 监听端口
  2. app.listen(888, () => {
  3. console.log('服务器已经启动');
  4. })

 然后重新启动服务器

3、安装nodemon

nodemon是一个自动启动node文件的第三方包 。

在编写调试Node.js项目的时候,如果修改了项目的代码,则需要频繁的手动close掉,然后再重新启动,非常繁琐。可以使用nodemon()这个工具,他能够监听项目文件的变动,当代码被修改后,nodemon会自动帮我们重启项目,极大方便了开发个调试。

只能在开发阶段使用,因为他是通过watch来进行检测代码,

  1. 1)安装 nodemon
  2. npm install -g nodemon
  3. 2)使用 nodemon
  4. 传统的方式是运行node app.js命令启动项目,需要手动重启
  5. 现在将node命令替换为nodemon命令,使用nodemon app.js启动项目,会自动重启

补充:之前我们是使用npm start命令启动,其实他是运行的node  

所以我们现在不使用npm start,而是nodemon app.js

如果出现这个问题,有可能是因为缓存的问题,所以清理一下就可以了

 

这样就可以啦 

二、写接口

(推荐这个) 一种是在server/routes文件下创建路由模块,在模块中写

  1. router.get('/Login', (req, res) => {
  2. // 前端接口/api/Login, 后端这里用/Login
  3. // req 请求对象, res 响应对象
  4. res.send('登录成功'); // 响应'1'回去
  5. })

一种是在app.js中写

  1. app.get('/login' ,(req, res) =>{
  2. // 后端收到post传参
  3. console.log(req.body);
  4. res.send('登录成功')
  5. });

测试接口使用Postman

 注意,server写get接口,是可以获取到的,但是写post则会报错404

那是因为在express中没有获取post请求 的API ,我们要用第三方包来获取body-parser 中间件

  1. 安装
  2. npm install --save body-parser
  3. 配置
  4. var bodyParser = require('body-parser')
  5. app.use(bodyParser.urlencoded({ extended: false }))
  6. app.use(bodyParser.json())
  7. 使用示例
  8. // 引包
  9. var express = require('express')
  10. var bodyParser = require('body-parser')
  11. var app = express()
  12. // 只要加上这两句配置,则在 post请求对象上会多出一个属性:body
  13. // 也就是可以用 req.body 来获取发送过来的数据
  14. // parse application/x-www-form-urlencoded
  15. app.use(bodyParser.urlencoded({ extended: false }))//post
  16. // parse application/json
  17. app.use(bodyParser.json())//post

 那我们来写一下代码,看看是否可以使用post接口

  1. router.post('/user/emia', (req, res) => {
  2. // 后端收到post传参
  3. console.log(req.body);
  4. res.send({
  5. status: 0,
  6. code: 200,
  7. msg: 'POST请求成功!',
  8. data: ['123', '456']
  9. })
  10. });

 到这里就可以获取到post接口啦 

三、连接数据库

前面两步其实就可以完成一些返回简单数据的接口,但如果想要完成一些比较复杂的,那就要连接数据库了。这里我拿MySQL数据库来讲。

步骤分为三步:

① 安装操作 MySQL 数据库的第三方模块(mysql

② 通过 mysql 模块连接到 MySQL 数据库 

③ 通过 mysql 模块执行 SQL 语句

1、安装:

只需要安装MySQL ServerMySQL Workbench这两个软件,就可以了满足需求了

地址:

1、MySQL Server:专门用来提供数据存储和服务的软件。

2、MySQL Workbench:可视化的 MySQL 管理工具,通过它,可以方便的操作存储在 MySQL Server 中的数据

参考他的文章,他写的比较详细:

2、连接数据库

  1. 1)安装mysql模块
  2. npm install mysql
  3. 2)配置 mysql 模块
  4. // 1. 导入 mysql 模块
  5. const mysql = require('mysql')
  6. // 2. 建立与 MySQL 数据库的连接关系
  7. const db = mysql.createPool({
  8.   host'127.0.0.1'// 数据库的 IP 地址
  9.   user'root'// 登录数据库的账号
  10.   password'admin123'// 登录数据库的密码
  11.   database'my_db_01'// 指定要操作哪个数据库
  12. })
  13. 3)测试 mysql 模块能否正常工作
  14. 调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
  15. // 测试 mysql 模块能否正常工作
  16. db.query('select 1'(err, results) => {
  17.   // mysql 模块工作期间报错了
  18.   if(err) return console.log(err.message)
  19.  //打印出[RowDataPacket{‘1’:1}]的结果就证明数据库连接正常  
  20. console.log(results)
  21. }) 

3、执行

就展示一部分 

  1. 1)查询数据
  2. // 查询 users 表中所有的数据
  3. const sqlStr = 'select * from users'
  4. db.query(sqlStr, (err, results) => {
  5.   // 查询数据失败
  6.   if (err) return console.log(err.message)
  7.   // 查询数据成功
  8.   // 注意:如果执行的是 select 查询语句,则执行的结果是数组
  9.   console.log(results)
  10. }) 
  11. 2)插入数据
  12. //向users表中,新增一条数据,其中username的值为Spider-Man,password的值为 pcc123
  13. const user = { username'Spider-Man'password'pcc123' }
  14. // 定义待执行的 SQL 语句,其中英文的?表示占位符
  15. const sqlStr = 'insert into users (username, password) values (?, ?)'
  16. // 执行 SQL 语句,使用数组的形式,依次为?占位符指定的具体的值
  17. db.query(sqlStr, [user.username, user.password], (err, results) => {
  18.   // 执行 SQL 语句失败了
  19.   if (err) return console.log(err.message)
  20.   // 成功了
  21.   // 注意:如果执行的是 insert into 插入语句,则 results 是一个对象
  22.   // 可以通过 affectedRows 属性,来判断是否插入数据成功
  23.   if (results.affectedRows === 1) {
  24.     console.log('插入数据成功!')
  25.   }
  26. }) 

具体连接过程如下:

上面的步骤是全部写在一个文件的,现在我把上面的步骤各自分成文件

第一步:安装

npm  install  mysql

第二步:导入 mysql 模块并配置模块,创建文件server/conf/db.config.js

  1. //导入 mysql 模块
  2. const mysql = require('mysql')
  3. //与 MySQL 数据库的连接
  4. module.exports = {
  5. host'localhost'// 数据库的 IP 地址
  6.   user'root'// mysql登录数据库的账号
  7.   password'admin123'// mysql登录数据库的密码
  8. port: '3306', // 端口
  9.   database'my_db_01'// 指定要操作哪个数据库名称
  10. }

第三步:封装mysql查询函数,创建文件server/conf/db.js 

  1. const dbConfig = require('./db.config');
  2. module.exports = {
  3. query: function(sql, params, callback) {
  4. //每次使用的时候需要创建链接,数据操作完成之后要关闭连接
  5. const connection = mysql.createConnection(dbConfig)
  6. connection.connect(function(err) {
  7. if (err) {
  8. throw err
  9. }
  10. //开始数据操作
  11. connection.query(sql, params, function(err, results, fields) {
  12. if (err) {
  13. throw err
  14. }
  15. //将查询出来的数据返回给回调函数
  16. callback &&
  17. callback(
  18. JSON.parse(JSON.stringify(results)),
  19. JSON.parse(JSON.stringify(fields))
  20. )
  21. //停止链接数据库,必须在查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
  22. connection.end(function(err) {
  23. if (err) {
  24. console.log('关闭数据库连接失败!')
  25. throw err
  26. }
  27. })
  28. })
  29. })
  30. },
  31. }

这个封装可以按照这里来写

  1. module.exports = {
  2. query: function(sql, params, callback) {
  3. //每次使用的时候需要创建链接,数据操作完成之后要关闭连接
  4. const connection = mysql.createConnection(dbConfig)
  5. connection.connect(function(err) {
  6. if (err) {
  7. throw err
  8. }
  9. //事件驱动回调
  10. connection.query(sql, params, callback)
  11. //释放连接
  12. connection.release()
  13. })
  14. },
  15. }

第四步:执行,server/routes/index.js

  1. var express = require('express');
  2. var router = express.Router();
  3. const db = require('../conf/db');
  4. /* GET home page. */
  5. router.get('/List', (req, res, next) => {
  6. // sql查询user表
  7. db.query('select * from users', [], function(results, fields) {
  8. // 以json的形式返回
  9. res.json({ results })
  10. })
  11. })
  12. module.exports = router;

第五步:启动项目

第六步:使用Postman测试

四、注意事项

1、

使用 cors 中间件解决跨域问题:

cors 是 Express 的一个第三方中间件。通过安装和配置 cors 中间件,可以很方便地解决跨域问题。等于是服务端直接允许请求获取资源并使用。

app.js

  1. 1)安装中间件 
  2. npm install cors
  3. 2)导入中间件 
  4. const cors = require('cors')
  5. 3)配置中间件,一定注意是在路由之前调用
  6. app.use(cors())

前端:

在vue.config.js中填写反向代理

  1. proxy: {
  2. //灵活代理;请求前缀为/api时,走下面的代理
  3. "/api": {
  4. target: "http://localhost:3000/", //代理服务器把请求转发给url(真正的后台服务器)
  5. changeOrigin: true, //用于控制请求头中的host值, 允许跨域
  6. //真正的服务器没有/api,所以要重写路径置空,否则找不到相应的路径
  7. pathRewrite: {
  8. "/api": "",
  9. },
  10. },
  11. },

后端:

  1. router.post('/user/emia', (req, res, next) => {
  2. // 调用res.send方法,向客户端响应结果
  3. res.header("Access-Control-Allow-Origin", "*"); //只要添加这一句就可以了
  4. res.send({
  5. status: 0,
  6. code: 200,
  7. msg: 'POST请求成功!',
  8. data: ['123', '456']
  9. })
  10. });

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发