zoukankan      html  css  js  c++  java
  • 搭建node服务端并使用express()创建简单数据接口,最后返回前端请求的所需数据

    一:搭建服务端

    1、在项目中新建一个名为server的文件夹,并在文件夹中新建index.js(用于搭建服务端)和user.js(用于存放返回给客户端的json数据)

    index.js文件代码

    // 主要分四步:
    // 引入-cors解决跨域-引入并发送数据-设置监听端口
    
    var express = require("express"); //首先引入express模块,不了解去看nodejs教程 安装:npm install express 
     
    var app = express();
     
    var fs = require("fs"); // 文件系统,用于引入user.json的数据 也可以自己随便写个数据 ;
     
    var cors = require("cors");// 这个比较重要,解决跨域问题.npm install cors 装一下
     
    app.use(cors({
     
    origin: ['http://localhost:8080','http://127.0.0.1:8080'], // 这是本地的默认地址和端口,vue启动的项目就是在这里,这样保证了等会我们在浏览器能访问服务器的数据(user.json)
     
    methods: ["GET", "POST"],
     
    alloweHeaders: ["Content-Type", "Authorization"]
     
    }))
     
     
    // 获取请求地址中的/user并匹配,可以添加多个
    app.get("/user", function (req, res) { //"/user" 是自定义的,用于显示在地址栏
    
    // 数据来源:
        //方法一:从文件中获取数据
        //读取储存数据的文件
        fs.readFile(__dirname + "/" + "user.json", "utf-8", function (err, data) { // __dirname是文件夹的名,我们用fs读取user.json
        // 把读取的文件通过 res.end()发送回给客户端
        res.send(data) 
        })
    
        //方法二:在本文件临时定义数据
        // var response ={
        //     "data1": {
        //         "name": "Mr.李",
        //         "age": "24",
        //         "look": "very handsome",
        //         "girlfriend":"保密"
        //     },
        //     "data2": {
        //         "name": "Mr.王",
        //         "age": "25",
        //         "look": "very handsome",
        //         "girlfriend":"保密"
        //     }
        // }
        // res.send(response) 
        
    });
    
    
    // 监听请求地址的对应端口
    var server = app.listen(3000, function () { // 设置服务端端口为3000,即:http://127.0.0.1:3000
     
    var host = server.address().address
     
    var port = server.address().port
    
    console.log("应用实例,访问地址为 http://%s:%s", host, port)
     
    })

    user.json文件代码

    {
        
        "data1": {
            "name": "Mr.李",
            "age": "24",
            "look": "very handsome",
            "girlfriend":"保密"
    
        },
    
       
        "data2": {
            "name": "Mr.王",
            "age": "25",
            "look": "very handsome",
            "girlfriend":"保密"
    
        }
        
    }

    2、进入index.js目录下执行node index.js命令启动服务器

     *开启成功如上图

    二:在客户端向刚才所创建的服务端请求数据

    1.因为vue官方已不再维护vue-resource,所以选择使用axios来作为请求工具

    (1)、安装axios

    (2)、在src/main.js中将axios加入到vue原型中(全局引用)

    2、这里为了图方便,直接在src/App.vue中的mounted钩子函数里面发送请求

    <template>
      <div id="app">
        <div id="nav">
          <router-link to="/">Home</router-link> |
          <router-link to="/about">About</router-link>
        </div>
        <router-view/>
      </div>
    </template>
    
    <script>
      export default {
        name:"App",
        mounted(){
          this.axios
          .get("http://10.10.38.63:3000/user")
          // .get("http://127.0.0.1:3000/user")
          .then(res => {
            console.log(res);
            // console.log(res.data.data1);
            // console.log(res.data.data2);
          })
          .catch(res => {
            console.log('err')
            console.log(res)
          })
        }
      }
    </script>
    <style>
    #app {
      font-family: Avenir, Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-align: center;
      color: #2c3e50;
    }
    
    #nav {
      padding: 30px;
    }
    
    #nav a {
      font-weight: bold;
      color: #2c3e50;
    }
    
    #nav a.router-link-exact-active {
      color: #42b983;
    }
    </style>
    View Code

     ⚠️注意:get后面的请求地址后面的/user对应index.js中服务器的"/user"

    3、运行yarn serve命令运行本地项目 ,打开控制台,可以看到已经请求成功并返回数据

     直到这里,前端可以自己造接口和数据来了,这样如果后台接口还没开发好的话,可以用来模拟动态数据,类似mock模拟数据

  • 相关阅读:
    Atitit.struts2体系结构大总结
    Atitit.hibernate体系结构大总结
    Atitit. 最佳实践 QA----降低cpu占有率--cpu占用太高怎么办
    Atitit.软件GUI按钮与仪表盘(01)--js区-----js格式化的使用
    Atitit.软件控件and仪表盘(23)--多媒体子系统--视频输出切换控制cvbs av s-video Ypbpr pal ntsc
    Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode
    Atitit.软件按钮与仪表盘(13)--全文索引操作--db数据库子系统mssql2008
    Atitit.软件GUI按钮与仪表盘(01)--报警系统--
    Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php
    Atitit.软件仪表盘(0)--软件的子系统体系说明
  • 原文地址:https://www.cnblogs.com/itgezhu/p/13094482.html
Copyright © 2011-2022 走看看