一、 概念
客户端:客户端与服务端对应,发送请求接受数据并将接受的数据展示出来。
服务端:接受客户端发来的请求,并会返回客户端请求的数据;服务端可以连接数据库,把数据放入数据中当客户端发送请求时,服务端向数据库请求数据返回给客户端。
数据库:用于存储管理数据。
二、 客户端怎么向服务端发送请求
1、请求方式
1)get 查询请求
在浏览器地址栏中输入网址,直接按回车,这些请求都是 GET 请求。
2)post 新增请求
3)put 修改请求
4)delete 删除请求
2、 请求地址
客户端发送请求要知道向服务端的接口(ip+端口)
3、 前端往后端传值
1):前端不往后端传数据
前端传的接口:/classifies
2): 前端往后端传数据
前端传的接口:/classifies/1
后端接受:req.params.clssifyid
3): 前端往后端传数据
前端传的接口:/classifies?classifyid=1
后端接受: req.query.classifyid
4): 前端往后端传数据
通过body传值,要注意的是用这种方式传值传进来的是字节流要通过下载安装body-parser
这个包解析为字符串
const bodyParser = require('body-parser') // 引用
app.use(bodyParser.urlencoded({ extended: false })) // 解析 req.body
app.use(bodyParser.json())
后端接受: req.body
4 、 不同请求方式后端怎么接受传参
GET 请求 通常用 req.query
方式接受参数
POST请求 通常用 req.body
方式接受参数
PUT请求 通常用 req.body
和 req.params
两种
DELETE请求 通常用 req.params
二、 服务端
1、
服务端要向客户端提供一个接口,一般用 nodejs 、 java、python 来写后端;
express 是 nodejs 的一个框架,使用它可以很简单的写服务端。
// 仿照着 express 官网写一个简单的 web 服务器
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('welcome to use Express')
})
app.get('/hello.txt', function(req, res){
res.send('Hello World');
});
var server = app.listen(3000, function() {
console.log('已启动')
});
2 、 服务端怎么返回数据给客户端
服务端用 req
来接受客户端发来的请求, 用 res
来返回数据;
res.send('hello world'); 返回字符串;
res.json({ name:'yml' }); 返回 json;
res.render('index', { name: 'yml' }); 返回 html;
res.redirect('/album'); 重定向到 /album 请求
三、 mysql 数据库
1、 sql 语句
mysql
net stop mysql 停止mysql 服务
net start mysql 开始mysql 服务
mysql -u root -p 连接数据库
数据库
create database 数据库名 创建一个数据库
show databases 查看mysql下有哪些子数据库
drop database 数据库名 删除数据库
use rest 使用该数据库
数据表
show tables; 查询数据库中所有数据表
create table 表名(id int, name VARCHAR(100) NOT NULL); 新增数据表
insert into 表名 (id,name) values (1,"炒饭"); 插入一条信息到数据表
update 表名 set name="炒饭" where id=1; 修改表数据
select * from 表名 ; 查看数据表的全部信息
SELECT id, name FROM cashbook where coop_user_id LIKE '%1%' // 从 cashbook 查询 coop_user_id 里面有1的 id 和 name字段
alter table 表名 drop 属性名 删除数据表字段
delete from 表名 【where 条件表达式】 删除数据表信息
2、 怎么连接服务端和数据库
先 npm install mysql
var mysql = require('mysql'); // 引用
var db = mysql.createConnection({ // 连接数据库
host : 'localhost',
user : 'root',
password : '123',
database : 'rest'
});
db.connect((err) => {
if (err) throw err;
console.log('Connected to database');
});
global.dbexec = function (sql, params) {
return new this.Promise(function (resolve, reject) {
db.query(sql, params, (err, result) => {
if (err) reject({ code: '9999', message: err });
resolve({ code: '0000', message: '操作成功', data: result});
});
});
}
3、 服务端怎么向数据库取数据并返回给客户端
app.get('/food', food.getFood); // get 请求方式 '/food' 请求接口 food.getFood 返回的数据
getFood: async function (req, res) {
const { name, classifyId } = req.query
let sql = 'select * from food where 1 = 1'
if (name) {
sql += ` and name = "${name}"`
}
if (classifyId) {
sql += ` and classifyid = ${classifyId}`
}
const result = await dbexec(sql)
res.json(result)
},
问题
1、 mysql数据库root登录密码忘记?
https://jingyan.baidu.com/album/ff411625efbd2012e4823730.html?picindex=5
2、 Access denied for user 'root'@'localhost' 由于mysql安全机制 不能用root用户登录 可以设置或者用普通用户登录
image.png
三、 js
1)
数组转化字符串
const a = [1, 2, 3]
a.join(',') // "1,2,3"
a.join('_') // "1_2_3"
字符串转化数组
const a = '720_1_6'
a.split('_') // [720, 1, 6]
对象字面量转化数组
const name = {
name: 'yml',
age: '25'
}
cost arr = [name]
cost arr = [ {
name: 'yml',
age: '25'
}]
2) js中字符串和变量 拼接
var name = 'yml';
var a = 'hello' + name;
sql += ` and classifyid = ${classifyId}` // 用``符号 变量 $() 写在括号里
三、 git
一个项目第一次提交到远程git仓库
git init 创建一个本地的git仓
git add . 提交到暂存区
git commit -m "first commit" 提交到本地git仓库
git remote add origin https://gitee.com/ydreamlin/serve_node.git //本地仓库和远程git仓库连接
git push -u origin master 提交到远程git仓库
四 服务端解决跨越问题
app.use(access());
module.exports = function () {
return function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1')
res.header("Access-Control-Allow-Headers", "content-type")
res.header("Content-Type", "application/json;charset=utf-8");
next();
}
}
网友评论