周报 第一期

2019-07-21  本文已影响0人  水水壶

一、 概念

客户端:客户端与服务端对应,发送请求接受数据并将接受的数据展示出来。
服务端:接受客户端发来的请求,并会返回客户端请求的数据;服务端可以连接数据库,把数据放入数据中当客户端发送请求时,服务端向数据库请求数据返回给客户端。
数据库:用于存储管理数据。

二、 客户端怎么向服务端发送请求

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.bodyreq.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();
    }
}

上一篇下一篇

猜你喜欢

热点阅读