Ajax(一)

Ajax(一)

服务器相关基础概念

常见的客户端浏览器

谷歌,IE/Edge , Safari

服务有哪两个重要作用:

  1. 资源存放服务

  2. 对外提供具体服务

客户端和服务器的通讯是基于 请求 和 响应

URL主要有哪几部分组成:

协议 主机名 端口号 资源存放路径

协议

http: 使用明文传输 不安全

https: s 表示 SS L加密协议,安全

端口号

默认端口号

http: 80

https: 443

URL编码

在 URL 地址中不允许出现中文、空格等特殊字符,因此浏览器会自动对 URL 地址内的中文进行转换处理。例如上面的地址:


在这里插入图片描述

浏览器内置encodeURI()decodeURI()两个方法,用来实现 URL:

Ajax含义

Ajax 是浏览器中的技术:用来实现客户端网页请求服务器的数据。
它的英文全称是 Asynchronous Javascript And

基础用法

Ajax请求数据的5种方式

请求方式描述
POST向服务器新增数据
GET从服务器获取数据
DELETE删除服务器上的一条数据
PUT更新服务器上的数据(侧重于完整更新)全量更新
PATCH更新服务器上的数据(侧重于部分更新)打补丁 局部更新

axios

是前端圈最火的、专注于数据请求的。

基础语法

axios({
method: '请求的类型',
url: '请求的URL地址'
}).then((result) => {
// .then 用来指定请求成功之后的回调函数
// 形参中的 result 是请求成功之后的结果
})

GET请求

axios({
      method : 'GET', // 请求方式
      url : 'http://www.liulongbin.top:3009/api/getbooks'  // 请求地址
    }).then(result => {
      console.log(result)
    })

查询参数:params

// 发起get请求,并传入查询参数
// 查询参数的本质 : 把参数 以?拼接在url后面  key = value    即 url?key=value
    axios({
      method: 'GET',
      url: 'http://www.liulongbin.top:3009/api/getbooks',
      params: {  // 查询参数
        id : 1
      }
    }).then(result => {
      console.log(result)
    })

/*
	// 上面这种写法就相当于:
	 axios({
      method: 'GET',
      url: 'http://www.liulongbin.top:3009/api/getbooks?id=1'
    }).then(result => {
      console.log(result)
    })
*/

在这里插入图片描述

在 GET 请求中携带多个查询参数

axios({
      method: 'GET',
      url: 'http://www.liulongbin.top:3009/api/getbooks',
      params: {
        id : 1,
        publisher: '北京图书出版社'

      }
    }).then(result => {
      console.log(result.data)
    })

/*
	// 上面这种写法就相当于:
	// 两个及以上参数用&符进行连接
	 axios({
      method: 'GET',
      url: 'http://www.liulongbin.top:3009/api/getbooks?id=1&publisher=%E5%8C%97%E4%BA%AC%E5%9B%BE%E4%B9%A6%E5%87%BA%E7%89%88%E7%A4%BE'
    }).then(result => {
      console.log(result)
    })
*/

在这里插入图片描述

result 是 axios 套壳的结果

示例图:

在这里插入图片描述

所以需要对result进行解构赋值:

axios({
      method : 'GET', // 请求方式
      url : 'http://www.liulongbin.top:3009/api/getbooks'  // 请求地址
    }).then(({data:{data}}) => {  // 深层解构
      console.log(data)
    })

在这里插入图片描述

POST请求

let btnPOST = document.querySelector('#btnPOST')
    btnPOST.addEventListener('click', function () {
      axios({
        method: 'POST',
        url: 'http://www.liulongbin.top:3009/api/addbook',
        data: {
          bookname: '美人是如何炼成的',
          author: 'Tricia',
          publisher: '个人出版社'
        }

      }).then(({ data: res }) => {
        console.log(res)
      })

    })

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSLy2SjM-1651243083358)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/417fa09b-f795-42da-bdbb-2f13cb5aeead/Untitled.png)]

提交数据方式

由于提交的数据太多,所以没有把数据拼接到 URL 的末尾;而是放到了独立的请求体中。

let btnPOST = document.querySelector('#btnPOST')
    btnPOST.addEventListener('click', function () {
      axios({
        method: 'POST',
        url: 'http://www.liulongbin.top:3009/api/addbook',
        data: {
          bookname: '美人是如何炼成',
          author: 'Tricia',
          publisher: '个人出版社'
        }
        
      }).then(({ data: res }) => {
        console.log(res)
      })
      
    })

在这里插入图片描述

请求报文&响应报文

请求报文

请求报文由请求行(request line)、请求头部( header )、空行 和 请求体 4 个部分组成。图示如下:

在这里插入图片描述

注意:

  • 在浏览器中,GET 请求比较特殊, 没有请求体。
  • 在浏览器中,POST、PUT、PATCH、DELETE 请求有请求体。

在这里插入图片描述

响应报文

响应报文由状态行、响应头部、空行 和 响应体 4 个部分组成。图示如下:
在这里插入图片描述

在这里插入图片描述

http响应状态码

概念:

http 响应状态码(Status Code)由三位数字组成,用来标识响应成功与否的状态。

作用:

客户端浏览器根据响应状态码,即可判断出这次 http 请求是成功还是失败了。

在这里插入图片描述

常见的响应状态码

状态码状态码描述说明
200OK请求成功。
201Created资源在服务器端已成功创建
304Not Modified资源在客户端被缓存,响应体中不包含任何资源内容
400Bad Request客户端的请求方式、或请求参数有误导致的请求失败
401Unauthorized客户端的用户身份认证未通过,导致的此次请求失败
404Not Found客户端请求的资源地址错误,导致服务器无法找到资源
500Internal Server Error服务器内部错误,导致的本次请求失败

http 响应状态码 Vs 业务状态码

正确区分响应状态码和业务状态码的不同,是保证使用 Ajax 不迷茫的必要前提。从如下 3 个方面进行区分:
① 所处的位置

  • 在状态行中所包含的状态码,叫做“响应状态码”
  • 在响应体的数据中所包含的状态码,叫做“业务状态码”
    在这里插入图片描述

② 表示的结果

  • 响应状态码只能表示这次请求的成功与否(成功或失败)
  • 业务状态码用来表示这次业务处理的成功与否
    在这里插入图片描述

③ 通用

  • 响应状态码是由 http 协议规定的,具有通用性。每个不同的状态码都有其标准的含义,不能乱用
  • 业务状态码是后端程序员自定义的,不具有通用性

在这里插入图片描述

接口

使用 Ajax 请求数据时,被请求的 URL 地址,就叫做数据接口(简称:接口或 API 接口)。
同时,每个接口必须有对应的请求方式。例如:

接口测试工具 postman

GET测试

POST测试

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且陶陶º

感谢大人投喂~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值