384 json-server, axios

使用接口的形式发送数据

一 、json-server 提供假数据接口

  1. json-server 作用 : 根据指定的 JSON 文件, 提供假数据接口
  2. 地址 : json-server
  3. 使用步骤
    1. 全局安装 json-server  : `npm i -g json-server`
    2. 准备一个json数据
    3. 执行 :  `json-server data.json`
    
    > json数据参考
    json数据可以参考 :
    {
      "todos": [
        {
          "id": 1,
          "name": "吃饭",
          "age": 20
        }
      ]
    }
  4. REST API 格式
* 1. 查询 : GET
* 2. 添加 : POST
* 3. 删除 : DELETE
* 4. 更新 : PUT 或者 PATCH(打补丁)
  1. 具体接口
* 1. 查询全部数据 http://localhost:3000/todos
*    查询指定数据 http://localhost:3000/todos/2
*
*  2. 添加一个对象 //localhost:3000/todos
*     POST
*     id 会自动帮我们添加 【不用写id。】
*
* 3. 更新数据 http://localhost:3000/todos/3
*    PUT 或者 PATCH
*    PUT 需要提供该对象的所有数据
*    PATCH 只需要提供要修改的数据即可
*
* 4. 删除数据
*    http://localhost:3000/todos/3
*    DELETE
  1. 可以借助 postman 测试接口

二 、axios 发送请求 (重点掌握)

读音 : /艾克笑丝/ 【哈哈,不准确。】

axios 使用说明

如果以后 发现一个工具名 XXX

(1)XXX的官方文档

(2)github

(3)npm

(4)百度 / 谷歌

  • 作用 : 一个专门用来发送 ajax 请求的库, 可以在浏览器或者 node.js 中使用
Promise based HTTP client for the browser and node.js
    以Promise为基础的HTTP客户端,适用于:浏览器和node.js
    封装ajax,用来发送请求,异步获取数据

  • 使用步骤
1. 本地安装 axios : `npm i axios`
2. 导入 axios
3. 使用

  • GTE 方式发送请求
// 方式1
axios.get('http://localhost:3000/todos/3').then(res => {
  console.log('获取到数据了:', res.data)
})

// 方式2
axios
  .get('http://localhost:3000/menus', {
    params: {
      id: 003
    }
  })
  .then(res => {
    console.log('获取到数据了:', res.data)
  })

  • POST 方式发送请求
     // post 请求
     axios
         // 第一个参数:表示接口地址
         // 第二个参数:表示接口需要的参数
         .post('http://localhost:3000/todos', {
           name: 'axios添加数据',
           done: true
         }).then ( res =>  打印 res)

  • 使用axios测试 todos 的几种接口
     //1. GET
      // 没有参数
      axios.get('http://localhost:3000/todo').then(res => {
        console.log(res)
      })
      // 有参数
      axios.get('http://localhost:3000/todo/1').then(res => {
        console.log(res)
      })
      axios
        .get('http://localhost:3000/todo', {
          params: {
            id: 2
          }
        })
        .then(res => {
          console.log(res)
        })

      // 2. POST
      axios
        .post('http://localhost:3000/todo', {
          name: 'XXX',
          age: 1
        })
        .then(res => {
          console.log(res)
        })

      //3. 删除
      axios.delete('http://localhost:3000/todo/8', {}).then(res => {
        console.log(res)
      })

      //4. 更新 - put
      axios
        .put('http://localhost:3000/todo/2', {
          name: '111',
          age: 300
        })
        .then(res => {
          console.log(res)
        })

      // 4. 更新 - patch
      axios
        .patch('http://localhost:3000/todo/1', {
          age: 3000
        })
        .then(res => {
          console.log(res)
        })


05-axios的基本使用.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>

<body>
    <script src="./node_modules/axios/dist/axios.js"></script>
    <script>
        // get
        //1. 获取全部数据
        // 参数 : url地址接口
        axios.get('http://localhost:3000/list').then(res => console.log(res))

        //2. 获取具体某一个
        axios.get('http://localhost:3000/list/3').then(res => {
            console.log(res)
        })

        //3. 获取具体某一个  id 作为 参数
        // 格式 : axios.get(url, config)
        // 配置项 config: { params(对象) 参数, headers(对象) : 请求头 }
        axios.get('http://localhost:3000/list', {
                params: {
                    id: 4
                },
                headers: {}
            })
            .then(res => {
                console.log(res)
            })

        // post 添加
        // post 添加是不需要传id的
        // 格式  axios.post(url, data)
        axios.post('http://localhost:3000/list', {
            name: '丽丽',
            done: false
        }).then(res => {
            console.log(res);
        })

        // delete 删除
        axios.delete('http://localhost:3000/list/5').then(res => {
            console.log(res)
        })

        // put / patch 修改
        axios.put('http://localhost:3000/list/6', {
            name: '春春3号',
            done: false
        }).then(res => {
            console.log(res);
        })

        axios.patch('http://localhost:3000/list/6', {
            name: '春春4号'
        }).then(res => {
            console.log(res)
        });
    </script>
</body>

</html>

三、完善 TodoMVC

  1. 获取全部

    axios.get('http://localhost:3000/list').then(res => {
        console.log(res.data);
        this.list = res.data;
    });

  2. 删除任务
    axios.delete('http://localhost:3000/list/' + id).then(res => {
        this.list = this.list.filter(item => item.id !== id);
        console.log(res);
    });

  3. 添加任务
    # id 会自动加
    axios
        .post('http://localhost:3000/list', {
        name: todoName,
        done: false
    })
        .then(res => {
        console.log(res.data);
        this.list.push(res里的对象);
    });

  4. 更新任务 (在 hideEdit 里实现)
    # 难点1 : 在 hideEdit 这个方法里
    # 难点2 : 获取的这个id 就是editId
    hideEdit(e) {
    
    axios.patch('http://localhost:3000/list/' + this.editId, {
        name: e.target.value
    }).then(res => {
        console.log(res);
    
        this.editId = -1;
    })
    
    },

  5. 删除已经完成 的
    # 因为 这个假接口没有实现以下删除 完毕
    clearCompleted() {
        // 清除已经完成的,,只需要过滤出来未完成的即可
    
        let arr = this.list.filter(item => item.done);
        arr = arr.map(item => item.id);
    
        for (let i = 0; i < arr.length; i++) {
            axios.delete('http://localhost:3000/list/' + arr[i]).then(res => {
                this.list = this.list.filter(item => item.id != arr[i]);
            });
        }
    },

  6. 点击修改状态
    # 单独给 checkbox 都注册点击事件
    # @input='stateChanged(item.id)' 
    
    stateChanged(id) {
        let todo = this.list.find(item => item.id == id);
    
        axios.patch('http://localhost:3000/list/' + id, {
            done: !todo.done
            }).then(res => {
            console.log(res);
            });
    }

原文地址:https://www.cnblogs.com/jianjie/p/12516716.html

时间: 2024-11-06 17:04:13

384 json-server, axios的相关文章

ArcGIS Server,rest路径输入要素json 格式描述

以下内容只测试了简单线, 在ArcGIS Server 的rest路径下可以对服务进行操作,如Query等,这些操作可以输入json 格式要素描述或运行得到即输出json格式要素描述. 如博客:http://www.cnblogs.com/mumu122GIS/p/6097687.html  中GP服务可以输入自定义要素,那么怎样获取符合输入标准的json格式要素描述以便输入呢? 或者怎样将运行结果(json格式要素描述)展现到ArcMap中呢? json格式的要素描述 以Server自带的几何

AJAX MVC server返回Json数据,client获取Json数据

<> 控制器 Controller using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Script.Serialization; namespace MvcApplication2.Controllers { public class HomeController : Controller { pu

把DataTable 转换成Json格式,适用于EasyUI 绑定DataGrid

本文转载:http://www.cnblogs.com/liang--liang/archive/2013/02/05/2893030.html public static string DataTable2Json(System.Data.DataTable dt) { System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder(); jsonBuilder.Append("{"); jsonBuilde

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数据,然后通过ajax技术向后台一般处理程序传递JSON,后台又是如何获取传来的JSON,并对JSON数据转换,然后将转换后的数据写入数据库的! 介绍这些步骤实现前,先说说自己的辛酸:絮叨辛酸,是因为为了实现这个功能,我真的用了很

json server的简单使用(附:使用nodejs快速搭建本地服务器)

作为前端开发人员,经常需要模拟后台数据,我们称之为mock.通常的方式为自己搭建一个服务器,返回我们想要的数据.json server 作为工具,因为它足够简单,写少量数据,即可使用. 安装 首先需要安装nodejs,建议使用最新版本.然后全局安装json server. npm install json-server -g 安装完成后可以用 json-server -h 命令检查是否安装成功,成功后会出现json-server相关的参数选项. 运行 安装完成后,可以在任一目录下建立一个 xxx

通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数

nodejs写入json文件,格式化输出json的方法

假如我需要把data序列化成json字符串,然后写入data.json文件中,代码如下: 1 let str = JSON.stringify(data) 2 3 fs.writeFile('data.json',str,function(err){ 4 if (err) {res.status(500).send('Server is error...')} 5 }) 入json文件后,都会出现很恶心的一行式,看看 不能忍对不对!!! Vanilla JS的JSON.stringify()是可

jsonp跨域访问servlet接口获取json数组,并且渲染数据,前后端完整

啊哈哈哈哈哈哈哈哈哈哈哈我太激动了~ 其实这个工作我一直在拖延啊,就觉得哇,好难啊,不想做欸= = 然后硬着头皮研究了一整个下午+晚上终于搞清楚了~~~~哇哈哈哈哈~~~好神奇哈哈哈哈哈~~~(疯了吧!) json.jsonp.jQuery Ajax这些东西说定义我也不是特别研究,只懂个大概,就不去复制百科了,没意思. 一.先说我要做的事情的需求,上来就撸代码估计很多人懵逼(就像今天下午的我一样- -||) 意图:本地服务端servlet生成json数据,我想在前端获取json数据并渲染成列表显

JSON基础,简单介绍

JSON(JavaScript Object Notation(记号.标记)) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON成为理想的数据交换语言.JSON易于人阅读和编写,同时也易于机器解析和生

【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用

 四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换json包.json转换object动态类.DataReader转换为Json.DataSet转换为Json.DataTable转成Json.Datatable转换为Json .格式化字符型日期型布尔型.过滤特殊字符等 using System; using System.Collections.Ge