周报 第一期

一、 概念

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容