美文网首页
周报 第一期

周报 第一期

作者: 水水壶 | 来源:发表于2019-07-21 17:20 被阅读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();
        }
    }
    
    

    相关文章

      网友评论

          本文标题:周报 第一期

          本文链接:https://www.haomeiwen.com/subject/ursklctx.html